Android-Performance

资源类型能

包括 磁盘,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 读写量和操作次数,从而提升效率

ZIP 压缩大量小文件时建议使用 ZipInputSteam

内存