币币交易模块重写(作者张辉) 现有问题 布局文件层级结构复杂。 多次迭代导致出现大量冗余代码。 关键模块代码不严谨,部分逻辑混乱。 缺少注释,不便于后面维护。 优化目标 布局...
![240](https://cdn2.jianshu.io/assets/default_avatar/3-9a2bcc21a5d89e21dafc73b39dc5f582.jpg?imageMogr2/auto-orient/strip|imageView2/1/w/240/h/240)
币币交易模块重写(作者张辉) 现有问题 布局文件层级结构复杂。 多次迭代导致出现大量冗余代码。 关键模块代码不严谨,部分逻辑混乱。 缺少注释,不便于后面维护。 优化目标 布局...
下面是事件分发机制的一些结论 ViewGroup默认不拦截任何事件。Android源码中ViewGroup的onInterceptTouchEvent方法默认返回false。...
先看示例代码 两个自定义控件,重写了相关方法,便于考察事件分发 点击一下界面中的文本,日志打印如下 可见,事件传递过程是由外向内,即事件总是先传递给父元素,然后由父元素分发给...
一个简单问题:点击Activity中的一个TextView,触摸事件是怎样分发传递的 View的事件传递由三个重要方法完成,dispatchTouchEvent(), onI...
当前组件销毁时,后台线程同样需要中止,否则仍会在内存中运行,这就造成内存泄漏。 线程对象属于一次性消耗品,一般线程执行完run方法之后,线程就正常结束了,线程结束之后就报废了...
AsyncTask是并行执行的吗?一般都会觉得当然是并行执行,但其实不是。 在Android 1.5刚引入的时候,AsyncTask的execute是串行执行的;到了Andr...
AsyncTask是对线程池和Handler的封装。以API 23源码为例,看它是怎样使用Handler的 Handler使用了主线程的Looper,这样onPreExecu...
详解一说明了线程池的基本配置参数,这里继续说AsyncTask内部是怎样对线程池进行配置使用的 AsyncTask对线程池的配置 以API 23(6.0)为例,看一看Asyn...
AsyncTask的内部使用线程池处理并发,要了解它是怎样使用线程池的,那要先了解线程池的基本设置 线程池的基本参数 corePoolSize: 核心线程数目,即使线程池没有...
这里Handler为什么要用弱引用来持有Activity的引用?和使用软引用有什么区别? 这里使用弱引用持有Activity,就是表示Handler不会占用着对activit...
Android系统不太突出进程概念,因此静态变量的生命周期也让人感觉模糊。这种模糊对于值类型的静态变量倒关系不大,但如果是静态的对象引用,则与内存回收、内存泄漏密不可分。 静...
如果一个变量,既是静态变量,而且是非静态的内部类对象,那么就会造成内存泄漏: 这里定义的 Hello 虽然是空的,但它是一个非静态的内部类,所以它必然会持有外部类即 Leak...
什么叫内存泄漏 垃圾收集器的运行是基于“节点可达算法”。简单说,如果一个对象,从它的根节点就是不可达的话,这个对象是没有引用的,GC就会回收它。 因此,如果一个对象从根节点开...
这个问题由使用非静态内部类导致内存泄漏的问题引出。 内部类和外围类的真实关系 内部类是个编译时的概念,一旦编译成功后,它就与外围类属于两个完全不同的类(当然它们之间还是有联系...
先来看一段使用Thread的代码,简单而常见 Ok,想一下,如果用户旋转了屏幕,这时会发生什么? 正常情况下,系统新创建一个横屏的Activity实例,销毁旧的Activit...
先看下面这段handler代码: 在使用handler时,这是一段很常见的代码。但是,它却会造成严重的内存泄漏问题。上述代码的编写往往会得到如下警告: 那么,handler是...
affinity本意是“和什么相似/一样”,这个一样是针对任务栈而言,所以也翻译为“任务相关性”。 affinity可以告诉所在的task,自己是这个task中的一员;拥有相...