枫叶「零碎记录」

Android开发经验注意点

1.I/O篇

1.1磁盘I/O

  • 项目要求不需要实时性和及时性尽可能的多用缓存,因为看你导致重复读写,在一些系统API中每次都可能需要重复打开文件导致磁盘IO读写性能浪费。

例如SharedPreferences的commit每一次的commit都进行了一次文件的打开和关闭,因此尽可能的使用一次commit方法即可。利用混存来保存多次写入的数据,延迟写入,从而减少写入次数。

  • 避免主线程进行读写,移到子线程中处理I/O事宜。因为有可能发生『放大效应』(简单来讲放大效应是在随机读写时需要清理当前磁盘的块整理的过程,和顺序读写不同在于整理过程需要耗费一定的性能导致明明只写8KB的大小却需要调度到512KB)会让平时是多毫秒的操作放大几十倍,导致主线程长时间未响应导致的体验不佳。但是数据是见面的来源,么有数据也无法展示相应的核心内容,所以移入子线程只是解决的第一步,最重要的是如何真正的减少I/O甚至避免I/O操作。
  • 合理的I/O缓存设置Buffer的大小。可以根据业务和机器性能环境来适当的调整,在读写时使用缓冲区开可以减少读写的次数,从而减少了切换内核态的次数提高效率。一般推荐Buffer大小为8KB。