UI
- UI不可见时,及时释放资源
- 页面布局,尽量避免太多层级,避免被VM回收。
- 页面背景图
- 在布局和代码中设置背景和图片的时候,如果是纯色,尽量使用color;
- 如果是规则图形,尽量使用shape画图;
- 如果是复杂icon,建议使用svg格式
- 如果svg不满足需求,建议使用9patch图;
- 如果不能使用9patch的情况下,针对几种主流分辨率的机型进行切图,比如xxhdpi
- View缓存
- 在ListView和GridView中,列表中的很多项(convertView)是可以重用的,不需要每次getView就重新生成一项。
- 页面的绘制其实是很耗时的,findViewById也比较慢。所以不重用View,在有列表的时候就尤为显著了,经常会出现滑动很卡的现象。
- 推荐使用recyclerview
- 使用RenderScript、OpenGL来进行复杂的绘图操作
- 使用SurfaceView来替代View进行大量、频繁的绘图操作
- 自定义View中避免在onDraw方法里面执行复杂的操作,避免创建对象。
- UI线程只做界面刷新,不做任何耗时操作
- 耗时操作放在子线程来做
- 可以使用Thread+handle,AsyncTask,RxAndroid/RxJava等进行逻辑处理
线程,进程
- 使用多进程拆分时请注意,一个空进程也要额外占1