安卓app开发原则及性能优化,个人理念

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wdx_1136346879/article/details/85317495

虽然是开发人员但是也对app设计开发UI等有自己的一定见解:

追求的理念;
apk包大小越小越好
app打开耗费资源少
UI图不是越炫酷越好 还要考虑性能 及对app的影响
如 以前加了个功能 打开pdf 加了个控件 apk直接加大了6M(上一版本12M,增加50% 相当于一个app,对用户什么感觉 直接就不下载了)
一个提示可以解决的 就别整个弹框(开发写出来就分分钟的事),但是代码量增加,代码是一个字母一个字母,一个字节字节堆起来的,会让apk无端端的增大,而不知道原因
着重点搞清楚:app这个是为了什么,功能还是UI还是效果 。为了UI效果耗时耗力耗财 功能影响了

接口轮询问题 浪费流量内存等
当页面不可见时,停止轮询访问接口 onDetachedFromWindow
回页面时 再重新开始轮询访问接口 onAttachedToWindow

主线程从sp中读取数据(可以异步就异步)影响页面加载和显示 )Memory & Threading(内存和线程)
复杂的页面用几个自定义view合并,这样页面复杂性降低,可读性加强
类中成员变量尽可能的少,多的话类的复杂程度就会变高

增加并发的线程数会导致内存消耗的增加,平衡好这两者的关系是非常重要的
多线程也会引起并发问题,(如集合同时删除和添加)用原子解决
第三方sdk的初始化时机选择()
网络初始化,

过度绘制必须注意是否会引起内存泄漏,如,在Activity内部定义的一个AsyncTask,它属于一个内部类,该类本身和外面的Activity是有引用关系的,
如果Activity要销毁的时候,AsyncTask还仍然在运行,这会导致Activity没有办法完全释放,从而引发
内存泄漏。所以说,多线程是提升程序性能的有效手段之一,但是使用多线程却需要十分谨慎小心,
如果不了解背后的执行机制以及使用的注意事项,很可能引起严重的问题。

内存泄漏 广播和服务的注册(不用的时候解绑,注销掉) static的使用(不能让其修饰集合或大对象,) 常用作修饰全局配置项、工具类方法、内部类
在activity的onDestory中handler.removeCallbacksAndMessages(null);取消所有的消息的处理 包括待处理的消息;二是声明handler的内部类为static。

listview中item的缓存处理

oom等 一般情况都是图片处理不当

利用studio工具Monitor进行监控 对新建类方法等进行检测

数据库的使用
在查询SQLite数据库时,会返回一个Cursor,当查询完毕后,及时关闭,这样就可以把查询的结果集及时给回收掉。

页面背景和图片加载
在布局和代码中设置背景和图片的时候,如果是纯色,尽量使用color;如果是规则图形,尽量使用shape画图;
如果稍微复杂点,可以使用.9图;如果不能使用9patch的情况下,针对几种主流分辨率的机型进行切图。

资源未关闭引起的内存泄露情况
比如:BroadCastReceiver、Cursor、Bitmap、IO流、自定义属性attribute
attr.recycle()回收。
当不需要使用的时候,要记得及时释放资源。否则就会内存泄露。

安卓推送 onepush

安卓百分比适配 PercentLayout

open CV 实现Android 的毛玻璃模糊效果

SpannableString打造绚丽多彩的文本显示效果

1、代码开发过程中注意事项
2、功能开发完成后性能检查项

页面控件的过度绘制,耗电量测检测,流量的消耗(应该从用户的角度去思考),如采用懒加载,版本更新(在wifi情况下下载更新)等

性能优化的帮助工具:

  1. MAT, Memory Monitor(属于AndroidMonitor中一个模块), HeapTool(查看堆信息),
    Allaction Tracking, LeakCanary Lint工具

  2. 无限循环动画

    没有在onDestroy中停止动画,否则Activity就会变成泄露对象。
    比如:轮播图效果。
    布局的书写,确保你的用户界面渲染流畅的关键就是移除任何非必须的View以及减少你的View层级。视图层级越深,花在测量视图的时间就越长。
    找出项目里面没用的view呢?或者减少不必要的view嵌套(减少层级)
    图片加载 注意事项: 质量,尺寸等压缩 缓存处理

以上内容仅代表个人观点

猜你喜欢

转载自blog.csdn.net/wdx_1136346879/article/details/85317495