枫叶「零碎记录」

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。
项目中的思考
当初成为火排队的Owner的时候就不再以一个纯粹的的开发人员的职责来要求自己,或多或少会接触一些开发外的杂事,跟客户了解需求、跟其他开发兄弟协调任务、自己研究餐厅业务相关的知识、开始关注团队成长和氛围、用户体验、关注架构、关注未来可能的需求,尽可能保证一点前瞻性吧. 在做管理学习上我觉得有个简单的方法叫对标学习。在其位谋其政,不在其位预谋其政。看你现在的项目经理、技术总监、CTO的工作日常,有机会分担责任时,哪怕是协调人员、组织会议、跟踪任务。 一个项目的开发时间是固定的,甚至在大多数互联网公司来说时间是紧迫的 不够的。一个项目从开始到结束,参与的人除了客户端,还有测试和服务...