Android APP优化思考以及注意点

一.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被强行结束进程,如何保护数据完整性???
        -数据何时更新???
        -数据完整性方案如何设计???
            -定义数据完整性接口
            -标识哪些字段数据为必填项
            -若是数据不完整,请求最新数据替换当前实体,并且保存入库。
            -需要支持刷新数据可控,数据完整时,可强制刷新;不完整默认自动刷新。

未完待续。。。

你可能感兴趣的:(Android)