一.Android优化思考以及注意点
(1)耗时操作
-实体类构造方法不要做耗时操作(数据量特别大时候,很耗时)
-greendao数据库插入或者更新数据的时候,数据量大时,缓存到集合中,批量执行。(减少了事物的开启与关闭的耗时操作,效率大大提升)
-数据的分页加载
检测工具:TraceView,AndroidStudio profiler工具
(2)UI卡顿
-listview滑动过程中不加载图片
-界面刷新频繁
-耗时操作放入到子线程中执行
检测卡顿:BlockCanary
(3)消息框架
-准确的通知!
-消息接受者,注册时,需带有唯一标识,不可像观察者模式,没有标识,全部通知,尤其是频繁更新UI情况下。
-业务增多时,可以引入消息组,可以通知整组或者某个消息标识,目的确保精准通知。(目前还没有看到这类三方库)
-传输数据扩展性要好!
-数据格式应该容易传输和解析!Android优先推荐使用Bundle,优点支持序列化,实现了cloneable,可以添加java基本数据类型,集合以及序列化实体类。
缺点:需要定义大量的key,需要对key进行统一管理设计。
推荐:EventBus,封装Android本地广播(Handler实现)
(4)数据库文件加密
-greendao 3.0以后支持sqlcipher加密
(5)代码可读性
-强烈推荐alibaba的java开发规范检测插件。
(6)内存泄漏
-hander的使用,弱引用处理,activity/fragment onDestroy方法remove所有消息
-context尽可能使用Application的context
-优先设计为静态内部类
-cursor、file读写以及相关使用流,需要及时关闭
-bitmap不使用时,及时recycle
-字符串拼接,使用StringBuilder(非安全)/StringBuffer(安全)
检测泄漏:MAT工具,LeakCanary
(7)全面可控的app
-通过长连接向客户端发送控制消息,app可以即时响应对应的操作;
-如打开指定页面,给指定人群弹出通知,弹出升级提示。
-版本及时回退功能
-可以控制app运行指定版本的代码
数据完整性
-异步数据入库:
-入库过程中,APP被强行结束进程,如何保护数据完整性???
-数据何时更新???
-数据完整性方案如何设计???
-定义数据完整性接口
-标识哪些字段数据为必填项
-若是数据不完整,请求最新数据替换当前实体,并且保存入库。
-需要支持刷新数据可控,数据完整时,可强制刷新;不完整默认自动刷新。
未完待续。。。