线程间通信
-
主线程和工作线程
-
工作线程与工作线程
- 为什么主线程Looper.loop()一直死循环,为什么没有卡死?
主要死循环中Looper.loop()中
Message msg = queue.next(); // might block
一直在等待,不占用CPU。
具体看nativePollOnce函数分析
自定义View
onMeasure()--->onLayout()--->onDraw()
注:除了自绘控件需要搞清楚三个方法(onMeasure, onLayout, onDraw)外其他两个自定义相对比较简单。
- invalidate()与postInvalidate(),requestLayout()三者区别?
| | invalidate() | postInvalidate() | requestLayout() |
| ----- | ----- | ----- | ----- |
| | 在ui线程执行 | 在工作线程执行 | |
| | onDraw() | onDraw() | onMeause(),onLayout(),onDraw()| - onMeasure()有几种Mode?
有三种模式:
UNSPECIFIED
这说明parent没有对child强加任何限制,child可以是它想要的任何尺寸。
EXACTLY
Parent为child决定了一个绝对尺寸,child将会被赋予这些边界限制,不管child自己想要多大。
AT_MOST
Child可以是自己任意的大小,但是有个绝对尺寸的上限。
事件分发机制
- Android事件分发机制完全解析,带你从源码的角度彻底理解(上)
- Android事件分发机制完全解析,带你从源码的角度彻底理解(下)
-
图解 Android 事件分发机制
注:三个重要方法:- dispatchTouchEvent事件分发
- onInterceptTouchEvent 事件拦截
- onTouchEvent() 事件处理
跨进程通信IPC
RPC指的是跨进程远程调用,强调了调用的功能,即一个进程之间调用另外一个进程的方法。
IPC指的是进程间通信,android使用Binder机制来进行进程间的通信,没有调用的功能。
通信方式:
- Binder机制
- socket
- 管道
- 消息队列
- 共享内存
- 信号量
传递数据类型:
- intent
- 基本类型
- 文件共享
- Content Provider
Android适配
- Android开发:最全面、最易懂的Android屏幕适配解决方案
-
Android切图
- 1套标注dp图
- 三套切图(hdpi,xhpi,xxhdpi)
Android动画
- Frame Animation(帧动画):按顺序播放事先做好的图像
- Tween Animation(补间动画):只能对View进行平移,缩放,渐变,旋转
- Property Animation(属性动画):API11开始引入,基于Object进行属性改变而
达到动画效果 - 使用动画场景
- 转场动画
- 加载动画
- 其他动画
Bitmap四种属性
ALPHA_8:每个像素占用1byte内存
ARGB_4444:每个像素占用2byte内存
ARGB_8888:每个像素占用4byte内存 (默认)
RGB_565:每个像素占用2byte内存(没有alpha属性)
Android绘制圆形图片的方法总结
- 使用Xfermode 相交模式:一般选择这种方式
- 通过裁剪画布区域实现:边角有锯齿
- 使用BitmapShader:不适合画太复杂圆,比较耗内存
定义Java注解处理器
Android ListView 与 RecyclerView 对比浅析
- 使用:ListView默认只支持垂直滚动,定义了比较多通用方法。RecyclerView支持水平和垂直滚动,定义比较多抽象接口具体实现由自己实现,扩展性强。
- 缓存:ListView二级缓存,一是离开屏幕View加入缓冲池,进入屏幕view复用缓冲池view,二是缓存多种类型view,更换adaper就清空。RecyclerView比ListView多两级缓存四级缓存,另外两个缓存为默认缓存离开屏幕的2个view和多个RecyclerView共用一个缓存池(上限5个))。
- 缓存本质区别:ListView缓存View,RecyclerView缓存View+ViewHolder+flag
生还是死?Android 进程优先级详解
- 前台进程
- 可见进程
- 服务进程
- 后台进程
- 空进程
MVC,MVP,MVVM与架构经验谈
插件化
-
动态加载使用的类加载器
- PathClassLoader:只能加载已经安装的apk,即/data/app目录下的apk
- DexClassLoader:能加载手机中未安装的apk、jar、dex,只要能在找到对应的路径。
- 插件化开源库
- 简单理解Android Dalvik、ART及APK编译过程