摘要: 安卓内存泄漏 阅读全文
posted @ 2021-01-07 10:15 chenxibobo 阅读(39) 评论(0) 推荐(0) 编辑
摘要: 谈到ThreadLocal,先讲一个生活中的例子,比如让100个人填写个人信息表,但是却只有一支笔,那么大家肯定要一个一个等待上一个人释放了笔才能让下一个人填,有一个可能就是大家一起哄抢这支笔。为了解决这个问题, 叫一个管理员,严格控制不能哄抢,这类似多线程里加锁控制资源访问。 每个人发一支笔,这就 阅读全文
posted @ 2021-01-04 17:45 chenxibobo 阅读(96) 评论(0) 推荐(0) 编辑
摘要: ANR的触发条件 ANR的本质是一个性能问题,即主线程中的耗时操作造成主线程堵塞,导致应用失去响应能力。常见的超时时限: Service与Bradcast只会打印trace信息,不会提示用户ANR弹窗,大部分可感知的ANR都是由于InputEvent。 Android对ANR的监控机制 Androi 阅读全文
posted @ 2021-01-04 15:49 chenxibobo 阅读(574) 评论(0) 推荐(0) 编辑
摘要: 常见的场景有三种: 外部滑动与内部滑动方向不一致 外部滑动与内部滑动方向一致 前两种情况的嵌套 2.滑动冲突的处理规则 不同的场景有不同的处理规则,例如上面的场景一,规则一般就是当左右滑动时,外部View拦截事件,当上下滑动时要让内部View拦截事件,这时候处理滑动冲突就可以根据滑动是水平滑动还是垂 阅读全文
posted @ 2020-12-29 10:41 chenxibobo 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 在OnTouchListener事件里有MotionEvent.ACTION_DOWN,MotionEvent.ACTION_UP和MotionEvent.ACTION_MOVE三个事件,我们在这里只讨论MotionEvent.ACTION_DOWN,MotionEvent.ACTION_UP,与M 阅读全文
posted @ 2020-12-29 10:40 chenxibobo 阅读(446) 评论(0) 推荐(0) 编辑
摘要: Android应用运行在后台的时候,经常被系统的LowMemoryKiller杀掉,当用户再次点击icon或者从最近的任务列表启动的时候,进程会被重建,并且恢复被杀之前的现场。什么意思呢?假如APP在被杀之前的Activity堆栈是这样的,A<B<C,C位于最上层 APP被后台杀死后,APP端进程被 阅读全文
posted @ 2020-12-09 15:59 chenxibobo 阅读(1113) 评论(0) 推荐(0) 编辑
摘要: RxJava背压主要用来解决异步订阅关系中,被观察者发送事件的速度与观察者接收事件的速度不匹配的问题。所谓背压,即生产者的速度大于消费者的速度带来的问题,比如在Android中常见的点击事件,点击过快则经常会造成点击两次的效果。在大多数情况下,由于被观察者发送事件速度太快,而观察者来不及响应处理所有 阅读全文
posted @ 2020-12-09 15:57 chenxibobo 阅读(276) 评论(0) 推荐(0) 编辑
摘要: 文章目录 一、本地单元测试 1. 创建测试类 2. Assert类中的常用断言方法 3. 运行测试类 4. 运行单个测试方法或多个测试类 二、Mockito测试框架的使用 1. Mock概念的理解 2. Mockito中几种Mock对象的方式 3. 验证行为 verify(T mock)函数的使用 阅读全文
posted @ 2020-12-09 15:55 chenxibobo 阅读(830) 评论(0) 推荐(2) 编辑
摘要: smali文件格式 每个smali文件都由若干条语句组成,所有的语句都遵循着一套语法规则。在smali 文件的头3 行描述了当前类的一些信息,格式如下: [java] view plain copy .class < 访问权限> [ 修饰关键字] < 类名> .super < 父类名> .sourc 阅读全文
posted @ 2020-12-09 15:51 chenxibobo 阅读(2540) 评论(0) 推荐(0) 编辑
摘要: Base64概念 什么是Base64? 按照RFC2045的定义,Base64被定义为:Base64内容传送编码被设计用来把任意序列的8位字节描述为一种不易被人直接识别的形式。(The Base64 Content-Transfer-Encoding is designed to represent 阅读全文
posted @ 2020-12-09 15:49 chenxibobo 阅读(388) 评论(0) 推荐(0) 编辑
摘要: 1、什么是JVM? JVM本质上就是一个软件,是计算机硬件的一层软件抽象,在这之上才能够运行Java程序,JAVA在编译后会生成类似于汇编语言的JVM字节码,与C语言编译后产生的汇编语言不同的是,C编译成的汇编语言会直接在硬件上跑,但JAVA编译后生成的字节码是在JVM上跑,需要由JVM把字节码翻译 阅读全文
posted @ 2020-12-09 15:43 chenxibobo 阅读(509) 评论(0) 推荐(0) 编辑
摘要: 1.网络基础 1.1 计算机网络分层 计算机网络分为五层:物理层、数据链路层、网络层、运输层、应用层 其中: 网络层:负责根据IP找到目的地址的主机 运输层:通过端口把数据传到目的主机的目的进程,来实现进程与进程之间的通信 1.2 端口号(PORT) 端口号规定为16位,即允许一个IP主机有2的16 阅读全文
posted @ 2020-12-09 15:39 chenxibobo 阅读(2194) 评论(0) 推荐(0) 编辑
摘要: 一、概述 之前写了个okhttputils的工具类,然后有很多同学询问这个工具类和retrofit什么区别,于是上了下官网,发现其底层对网络的访问默认也是基于okhttp,不过retrofit非常适合于restful url格式的请求,更多使用注解的方式提供功能。 既然这样,我们本篇博文首先研究其所 阅读全文
posted @ 2020-12-08 17:37 chenxibobo 阅读(385) 评论(0) 推荐(0) 编辑
摘要: 前言 我从去年开始使用 RxJava ,到现在一年多了。今年加入了 Flipboard 后,看到 Flipboard 的 Android 项目也在使用 RxJava ,并且使用的场景越来越多 。而最近这几个月,我也发现国内越来越多的人开始提及 RxJava 。有人说『RxJava 真是太好用了』,有 阅读全文
posted @ 2020-12-08 13:52 chenxibobo 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 缘起 笔者为什么会挑这个话题,是因为长时间以来我自己对这2个方法一直有些疑惑,比如: 为啥叫onAttachedToWindow而不是onAttachedToActivity,Window又是什么,在哪里?毕竟我们平时绝大多数时候接触到的是Activity啊; Activity有明确的生命周期方法, 阅读全文
posted @ 2020-12-08 13:40 chenxibobo 阅读(797) 评论(0) 推荐(0) 编辑
摘要: 1 背景 之所以写这一篇博客的原因是因为之前有写过一篇《Android应用setContentView与LayoutInflater加载解析机制源码分析》,然后有人在文章下面评论和微博私信中问我关于Android应用Activity、Dialog、PopWindow加载显示机制是咋回事,所以我就写一 阅读全文
posted @ 2020-12-08 13:27 chenxibobo 阅读(509) 评论(0) 推荐(0) 编辑
摘要: 1 背景 其实之所以要说这个话题有几个原因: 理解xml等控件是咋被显示的原理,通常大家写代码都是直接在onCreate里setContentView就完事,没怎么关注其实现原理。 前面分析《Android触摸屏事件派发机制详解与源码分析三(Activity篇)》时提到了一些关于布局嵌套的问题,当时 阅读全文
posted @ 2020-12-08 13:20 chenxibobo 阅读(270) 评论(0) 推荐(0) 编辑
摘要: Picasso 与 Glide对比 相似Glide 和 Picasso在API的调用上 非常相似,且都支持图片的内存缓存,都是非常优秀的图片加载框架,可以说Glide是Picasso的升级,在性能上有所提升。 差异 1.缓存方式不同首先Picasso是2级缓存,它支持内存缓存而不支持磁盘缓存;而Gl 阅读全文
posted @ 2020-12-07 17:13 chenxibobo 阅读(475) 评论(0) 推荐(0) 编辑
摘要: 直接在当前APK加载未安装apk中的资源 我现在就是要在当前安装的apk中去加载未安装的apk的res目录下的drawable、layout、string、color等。先来看一个简单的实践 首先去创建一个用于动态加载的项目dynamic_resource,我要做的事情很简单,就是获取res目录下的 阅读全文
posted @ 2020-12-07 17:00 chenxibobo 阅读(1715) 评论(0) 推荐(0) 编辑
摘要: 背景 我们知道,http 通信存在以下问题: 通信使用明文可能会被窃听 不验证通信方的身份可能遭遇伪装 无法证明报文的完整型,可能已遭篡改 使用 https 可以解决数据安全问题,但是你真的理解 https 吗? 当面试官连续对你发出灵魂追问的时候,你能对答如流吗 什么是 https,为什么需要 h 阅读全文
posted @ 2020-12-07 16:48 chenxibobo 阅读(3489) 评论(0) 推荐(2) 编辑
摘要: 一、背景 最近在项目的版本迭代中,出现了一些内存问题的小插曲,然后自己花了一些时间优化了APP运行时内存大小的问题,特此做个总结,与大家分享。 二、简介 在Android程序开发中,当一个对象已经不需要再使用了,本该被回收时,而另外一个正在使用的对象持有它的引用从而导致它不能被回收,这就导致本该被回 阅读全文
posted @ 2020-12-07 16:12 chenxibobo 阅读(1785) 评论(0) 推荐(0) 编辑
摘要: LiveData是一个可被观察的数据持有者类。与常规的Observable不同,LiveData能意识到应用程序组件的生命周期变化,这意味着它能遵守Activity、Fragment、Service等组件的生命周期。这种意识确保LiveData只更新处于活跃状态的应用程序组件Observer。 No 阅读全文
posted @ 2020-12-07 15:50 chenxibobo 阅读(302) 评论(0) 推荐(0) 编辑
摘要: 要用android实现点对点通信,可以使用socket完成,使用socket需要知道对方的IP地址以及端口号,这里我省略了服务器端(编写正规的通信软件还是得需要服务器做中转,用服务器得知A的IP地址,然后让A做服务器端,B用A的Ip地址去获取数据),只是展示相关原理,首先看服务器端 package 阅读全文
posted @ 2020-12-04 18:55 chenxibobo 阅读(800) 评论(0) 推荐(0) 编辑
摘要: 一:什么是ANR ANR:Application Not Responding,即应用无响应 二:ANR的类型 ANR一般有三种类型: 1:KeyDispatchTimeout(5 seconds) --主要类型 按键或触摸事件在特定时间内无响应 2:BroadcastTimeout(10 seco 阅读全文
posted @ 2020-12-04 18:00 chenxibobo 阅读(415) 评论(0) 推荐(0) 编辑
摘要: 缘起 在Android开发中,我们经常会见到下面的代码,比如: protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); System.out.println("onCreate 阅读全文
posted @ 2020-12-04 17:20 chenxibobo 阅读(695) 评论(0) 推荐(0) 编辑
摘要: 原文链接:http://www.importnew.com/12773.html 本文由 ImportNew - 李 广 翻译自 javarevisited。欢迎加入Java小组。转载请参见文章末尾的要求。 不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题。Java语言一个重要的特点就是 阅读全文
posted @ 2020-12-04 17:18 chenxibobo 阅读(88) 评论(0) 推荐(0) 编辑
摘要: 多线程和并发问题是Java技术面试中面试官比较喜欢问的问题之一。在这里,从面试的角度列出了大部分重要的问题,但是你仍然应该牢固的掌握Java多线程基础知识来对应日后碰到的问题。(校对注:非常赞同这个观点) Java多线程面试问题 1. 进程和线程之间有什么不同? 一个进程是一个独立(self con 阅读全文
posted @ 2020-12-04 17:17 chenxibobo 阅读(99) 评论(0) 推荐(0) 编辑
摘要: // 预计存入 1w 条数据,初始化赋值 10000,避免 resize。 HashMap<String,String> map = new HashMap<>(10000) // for (int i = 0; i < 10000; i++) Java 集合的扩容 HashMap 算是我们最常用的 阅读全文
posted @ 2020-12-04 17:03 chenxibobo 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 一. 序 Handler 机制算是 Android 基本功,面试常客。但现在面试,多数已经不会直接让你讲讲 Handler 的机制,Looper 是如何循环的,MessageQueue 是如何管理 Message 等,而是基于场景去提问,看看你对 Handler 机制的掌握是否扎实。 本文就来聊聊 阅读全文
posted @ 2020-12-04 16:54 chenxibobo 阅读(211) 评论(0) 推荐(0) 编辑
摘要: 目前行业内有很多电量测试的方法: 1.1 Batterystats & bugreport Android 5.0及以上的设备, 允许我们通过adb命令dump出电量使用统计信息. 1, 因为电量统计数据是持续的, 会非常大, 统计我们的待测试App之前先reset下, 连上设备, 命令行执行: $ 阅读全文
posted @ 2020-12-04 16:46 chenxibobo 阅读(828) 评论(0) 推荐(0) 编辑
摘要: 一、文件操作相关命令 1.文件操作命令 子命令参数说明 cd 无 进入目录 cat [-beflnstuv] [-B bsize] [file...] 查看文件内容-n:显示行号-b:显示行号,但会忽略空行-s:显示行号,连续空行标记为一行 df 无 列出分区列表 du [-H] [-L] [-P] 阅读全文
posted @ 2020-12-02 20:10 chenxibobo 阅读(1951) 评论(0) 推荐(0) 编辑
摘要: mac上按键符号 ⌥ : option / alt ⇧ : shift ⌃ : control ⌘ : command ⎋ : esc (一)查找/查看相关 搜索任意内容 双击 sft 当前文件查找/替换 cmd + F / cmd + R 使用cmd + G,sft + cmd + G,跳到下一个 阅读全文
posted @ 2020-12-02 20:05 chenxibobo 阅读(561) 评论(0) 推荐(0) 编辑
摘要: 转https://blog.csdn.net/luoshengyang/article/details/6747696 Android应用程序框架层创建的应用程序进程具有两个特点,一是进程的入口函数是ActivityThread.main,二是进程天然支持Binder进程间通信机制;这两个特点都是在 阅读全文
posted @ 2020-11-30 19:51 chenxibobo 阅读(127) 评论(0) 推荐(0) 编辑
摘要: 搬砖自:https://www.jianshu.com/p/7e7e8366cc52 一、前言 在以前,android是使用布局如LinearLayout 、RelativeLayout等来构建页面,但这些布局使用起来很麻烦,并且经常需要一层一层嵌套,写一个简单的页面就需要费很大的劲。所以在16年I 阅读全文
posted @ 2020-11-13 16:14 chenxibobo 阅读(658) 评论(0) 推荐(0) 编辑
摘要: 搬运自csdn博主风行南方 1.背景 默认情况下,AIDL只支持下列数据类型: Java八种基础数据类型(如 int、long、char、boolean 等); String字符串; CharSequence字符序列; List列表,List中的所有元素须是前面提到的数据类型,或者是Parcelab 阅读全文
posted @ 2020-08-19 15:50 chenxibobo 阅读(1475) 评论(0) 推荐(0) 编辑
摘要: 来自转载: 在写这篇博客之前,先抛出一个问题,安卓应用程序的入口是什么呢?我想不少人可能回答说:application的onCreate方法,其实并不是的,即使是application,也有一个方法比onCreate先执行,这个方法就是attachBaseContext(Context contex 阅读全文
posted @ 2020-08-03 18:04 chenxibobo 阅读(736) 评论(0) 推荐(0) 编辑
摘要: public class DeadLock{ static Object o1 = new Object(); static Object o2 = new Object(); public static void main(String[] args) { new Thread(new Runna 阅读全文
posted @ 2020-07-23 11:45 chenxibobo 阅读(551) 评论(0) 推荐(0) 编辑
摘要: 简介 CAS的全称是compare and swap,它是java同步类的基础,java.util.concurrent中的同步类基本上都是使用CAS来实现其原子性的。 CAS的原理其实很简单,为了保证在多线程环境下我们的更新是符合预期的,或者说一个线程在更新某个对象的时候,没有其他的线程对该对象进 阅读全文
posted @ 2020-07-21 17:24 chenxibobo 阅读(1886) 评论(0) 推荐(1) 编辑
摘要: 1、为什么要有内存模型 在介绍Java内存模型之前,先来看一下到底什么是计算机内存模型,然后再来看Java内存模型在计算机内存模型的基础上做了哪些事情。要说计算机的内存模型,就要说一下一段古老的历史,看一下为什么要有内存模型。 内存模型,英文名Memory Model,他是一个很老的老古董了。他是与 阅读全文
posted @ 2020-07-21 16:03 chenxibobo 阅读(153) 评论(0) 推荐(0) 编辑
摘要: class Food{} //Lev 2 class Fruit extends Food{} //Lev 3 class Apple extends Fruit{} class Banana extends Fruit{} //Lev 4 class RedApple extends Apple{ 阅读全文
posted @ 2020-07-17 16:23 chenxibobo 阅读(684) 评论(0) 推荐(0) 编辑