handler机制
一张图解决所有问题事件分发机制
图解:在哪一层返回true,在那一层继续执行move、upAsyncTask
- 注意更新UI只能在onPostExecute中;
- asyncTAsk和activity的生命周期不绑定,所以在ondestroy中要cancel;
- 和handler一样最好定义成static;
IntentService
- 多次startService,oncreate执行一次,onStartCommand执行多次,onHandleIntent按顺序执行;
- IntentService和service的区别:不在主线程,完成后自己结束;
- IntentService和子线程的区别:属于service(四大组件之一),优先级高,普通子线程优先级非常低,当内存紧张时,首先被杀死;
LRU Cache
- 使用的是least recently used算法,当缓存超限时,删除最近使用最少的;
- 使用的是LinkedHashMap, 使用链表添加删除高效,还可以按顺序访问;
- 当使用get方法时,这个值就移动到表头;
jvm、dalvik和art
- jvm运行的是java字节码,dalvik运行的是dalvik字节码
java字节码是java文件经过编译,生成java字节码保存在class文件中;dalvik字节码是由java字节码转换而来,并打包到dex文件中;dalvik通过解释dex文件来执行这些字节码; - jvm是基于栈的读写,dalvik是基于寄存器的读写,dalvik是快很多
- dalvik是JIT,即时翻译字节码;art是AOT,安装时就将字节码翻译成机器码
所以art运行更快,更省电,安装时变慢,占用内存变大;