资源类型能
包括 磁盘,CPU,内存,网络,电池
磁盘
避免主线程 IO
避免主线程操作文件和数据库
50% 以上卡顿问题都是由主线程 I/O 引起的
使用 apply() 代替 SharedPreference.commit()
apply() 是异步操作,commit()是同步操作
提前初始化 SharedPreference
在多进程和旧版本的 Android 中,初始化过程的 I/O 是在主线程的
减少 I/O 读写量
减少使用 SECLECT *
减少从数据库读取的数据量,减少耗时
利用缓存减少重复读写
内存缓存命中率极高,投入产出高
数据库减少使用 AUTOINCREMENT
因为要多操作一个表,所以 INSERT 好时减少 2~4 倍
使用合适的数据库分页
Sqlite 读写磁盘是以 page 为单位的,在 3.12 0 版本之前,Sqlite 默认 page 大小是 1KB,从 3.12.0 版本开始,page 大小是 4KB
频繁查询的表使用索引
缩阴可以极大的减少读磁盘的数据量,极大地提升效率
避免无效索引
无效索引的问题通常是严重的。除了出发全表扫描,产生大量的容与读写之外,还降低了写入性能
减少 I/O 操作次数
使用 8KB Buffer 读写
可以减少 2~3 倍耗时
批量更新数据库使用事务
启用事务,根据业务规模,会大量减少 I/O 读写量和操作次数,从而提升效率