android 省电算法,Android 移动性能优化

1、安装包太大会对下载失败率有影响。

2、图片采用webP,可以节省用户流量。

3、减少随机读写操作,以此减少对磁盘的IO操作。

4、避免在主线程中进行I/O操作,尤其是写操写。否则在磁盘空间不足情况下,容易引起写入放大。将IO操作移到非主线程中执行即可。

5、利用缓冲区,会有效减少磁盘IO的操作次数。先将对象序列化后的信息写入到缓存区中,然后再一次性写入到磁盘上。

6、合理设置Buffer的大小,设置小了,起不到减少操作IO的次数。也不能设置太大了,否则会导致申请buffer的时间变长。buffer的大小设置

= 读写大小 / 读写次数。

7、如果ZIP文件已保存在本地,解压ZIP中所有的文件,使用ZipFile效率比ZipInputStream高出15-27%。

8、如果ZIP文件已保存在本地,仅解压ZIP中某些文件,建议使用ZipFile。

9、如果ZIP文件不在本地磁盘上,或者需要顺序解压一小部分文件,又或者ZIP文件目录损坏,建议使用ZipInputStream.

10、首次安装的表为空时,不要做无谓的查询操作。

11、对于覆盖安装,在表已经存在的情况下,可以使用insertor replace语句来完成插入。

12、打开数据库会比较耗时,还伴有一些I/O操作,建议在数据库打开后,先不要关闭,在应用程序退出时再关闭。可以采用缓存数据库连接的做法。

13、数据库表如果使用了autoincrement时,需要要额外维护sqlite_sequence而增加的额外I/O开销。增加这个自动递增后,会比没有加这个,耗时多一倍以上。autoincrement关键字会增加CPU、内存、磁盘空间、磁盘IO的负担,所以尽量不要用,除非一定要这样做。

14、解码Bitmap不要使用decodeFile,这样效率不高,建议使用decodeStream,同时传入的文件流为BufferedInputStream。同样decodeResource同样存在性能问题,建议用decodeResourceStream。

15、避免主线程I/O:

(1)避免主线程操作文件和数据库,50%以前的卡顿问题都是由主线程I/O引起的。

(2)用apply代替Sharepreference.commit,前者是异步,后者是同步操作。

(3)提前初始化SharePreference.多进程的android初始化过程的IO读写都是在主线程中的。

16、减少IO读写量:

(1)减少使用select*,从减少从数据库读取的数据量减少耗时。

(2)利用缓存减少重复读写。内存缓存命中极高,投入产出高。

(3)数据库少用autoincrement。

(4)使用合适的数据库分页,sqlite读写磁盘是以page为单位的。从3.12.0开始,pagesize为4KB。

(5)频繁查询的表使用索引,索引可以极大地减少读磁盘的数据量,极大提高效率。

(6)避免无效索引。无效索引除了会触发全表扫描,产生大量冗余的读写之外,还降低了写入性能。

17、减少IO操作次数:

(1)使用8KBBuffer读写,可以减少2到3倍的耗时。

(2)批量更新数据库使用事务。启用事务,会大量减少IO读写。

(3)ZIP压缩大量小文件时建议使用ZipInputStream.

18、避免内存泄漏:避免Activity泄漏,意味着被引用的View、图片等全部泄漏。

19、减少常驻内存:

(1)尽量使用RGB565,将节省图片的内存,高达50%。

(2)避免内存重复。

(3)res/drawable里的图片建议使用Drawable.createFromStream来加载,图片要放置到合适的资源文件夹(hdpi,xxhdpi),使用错误的文件夹,导致图片被放大,最终使用app内存增加。

20、对所有图片解码API做OutOfMemoryError的异常处理。

21、减少GC:

(1)Bitmap尽量使用inBitmap。

(2)建议使用SpraseMap或ArrayMap.

(3)建议StringBuilder重用。

22、核心场景CPU算法最优:

(1)能用int的绝不用float,比较两个float数值大小的执行时间是int数值的4倍左右。

(2)选择合适的容器:一般的容器:Vector、HashMap、LinkedHashMap等,android提供在内存稀缺的性能场景使用的容器:ArrayMap、SparseArray等,基于线程安全,ConcurrentHashMap等。

23、省电的做法,尽量让CPU休眠:

(1)锁屏、灭屏、程序放置后台时,释放或停止Android涉及的耗电服务:GPS、WifiManager、Sensor等。

(2)锁屏、灭屏释放WakeLock,否则会让CPU无法休眠,导致严重的耗电问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值