Android移动性能实战>总结

Android移动性能实战

知识点1
3+1+1
磁盘,cpu,内存
网络
电池(耗电)
知识点2
SP每次commit()会对应一次文件的打开和关闭
优化:同一个方法中,在最后一次保存中调用commit即可
使用apply代替commit,前者是异步操作,后者是同步操作
知识点3
Objectoutputstream序列化磁盘时,会把内存中的每个对象保存在磁盘,在保存对象时候,每个数据成员会带来一次I/O操作。
解决方案:使用byteArrayOutputStream包装它,先将对象序列化后的信息写到缓存区中,然后再一次性地写到磁盘上。见照片

知识点4
解压缩文件
如果zip文件已保存在磁盘中,且解压zip中所有文件,建议使用zipfile
仅解压ZIP中间的某些文件,使用zipfile
如果ZIP没有在磁盘上或者顺序解压一小部分文件,又或ZIP文件目录遭破坏,使用zipinputstream,见照片
知识点5
对于刚刚创建的数据表,数据为空,不要做无所谓的查询,浪费时间
对于覆盖安装,表已经存在,使用insert或者replace
知识点6
调用getwriteabledata获取数据库缓存,避免重复打开数据库
知识点7
Autoincrement字段不要轻易使用,会使数据库的增删改查耗时增加不止一倍两倍
因为需要一个sqlite_sequence表维护行号增加I/O开销,且,删除过的行不会再被利用
知识点8
序列化和反序列化
场景:持久化保存数据
对象在网络中传递
对象在IPC间传递

序列化:serializable与parcelable
前者会产生大量的临时变量,消耗内存,从而引起频繁的GC
后者不能用于将数据存储到磁盘上的情况。适用于IPC

gson实现json的序列化tojson,反序列化fromjson

如果没有特殊需求,为了避免序列化带来的性能问题,可以考虑使用sp或者sqlite存储数据。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zz白龙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值