安卓APP优化归档
来源:互联网 发布:16进制转换10进制算法 编辑:程序博客网 时间:2024/04/30 19:31
经过N个项目(包括线上和练手自己写的),觉得想成为资深的app开发工程师,肯定会遇到对项目优化的问题,结合大神们的文章,做了一个简单的归档:
抽空简单汇总一下,高级工程师路过,O(∩_∩)O哈哈~
1.APP启动速度。
主要是冷启动和热启动的启动速度,通过在application入口减少耗时的操作来进行优化。
参考文章: 启动优化1
启动优化2
2.UI
去除不必要的android:background属性来减少Overdraw ,使用Hierarchy Viewer来减少层次结构.有4个比较特别的标签是非常重要:viewStub,requestFocus,merge和include,其中3个与资源复用有关。
viewStub直观效果类似于View的不可见性,但其所包裹的View在默认状态下不会占用任何内存空间。viewStub通过include从外部导入View元素。用法:通过属性android:layout来设定内容。
include 用于直接加载xml,是复用UI资源的常用标签。用法:通过属性layout来设定加载的xml。
requestFocus 用于设定焦点。用法:将requestFocus放于View标签中。
merge 目的:删减多余或额外的层级。
如果你创建的Layout不是把FrameLayout当作根节点,就不能使用merge来优化。
当使用include或viewStub从外部导入xml结构时,可以将被导入的xml用merge作为根节点,这样当被嵌入后可以很好地融合,不会出现冗余的节点。
只可以作为xml-layout的根节点。扩充的xml-layout是merge作为根节点时,需要将被导入的xml-layout置于viewGroup中,同时需要设置attachToRoot为true。
参考文章: ui优化1
ui优化2
检测ui卡顿的方法
3.代码。
可以专注于代码的可维护性,可以使用StrictMode(2.3引入),检测应用中执行缓慢的代码或潜在缓慢的代码。
注意:只是在开发阶段启用StrictMode,发布应用时,记得要禁用它,如果你使用detectAll()方法去简历策略总是可行的。
静态变量引起内存泄露
生命周期较长,避免当前activity使用后,存在引用,最后没有释放。
使用Application的Context
Application Context的生命周期和应用的生命周期一样长。如果生命长的对象需要一个Context,就可以使用Application对象。
及时关闭资源
数据库contentprovider,io,sokect、cursor等。
列表的优化
使用ViewHolder 对adapter进行优化。
谨慎使用external libraries
即使是针对Android而设计的library,也可能是很危险的,因为每一个library所做的事情都是不一样的。例如,其中一个lib使用的是nano protobufs, 而另外一个使用的是micro protobufs。那么这样,在你的app里面就有2种protobuf的实现方式。这样的冲突同样可能发生在输出日志,加载图片,缓存等等模块里面。同样不要陷入为了1个或者2个功能而导入整个library的陷阱。如果没有一个合适的库与你的需求相吻合,你应该考虑自己去实现,而不是导入一个大而全的解决方案。
减少内存对象的占用
· *SparseArray< E > sparseArray = new SparseArray< E >();
替代HashMap< Integer, E> hashMap = new HashMap< Integer, E>();*
· SparseBooleanArray,用来取代HashMap< Integer, Boolean>
·避免在android里面使用Enum
· bitmap的inSampleSize:缩放比例和decode format:解码格式可以减少内存占用。
参考文章
**
4. 内存优化。
使用LeakCanary工具来检测内存泄露并处理。
参考链接
5. 电量、网络等优化。
电量
网络
6. 兼容性。
· 系统的兼容,比如更新下载功能 需要做 7.0的兼容代码处理。
· UI的兼容,自定义组件控制好文字长度,以免超出外边界。
- 安卓APP优化归档
- 安卓app优化
- 安卓开发 第十二篇 Android App 优化总结
- 【安卓-优化点】安卓App开发思路 一步一个脚印(四)Fragment的重复利用
- 【安卓】安卓App开发思路 一步一个脚印(十五)实现闪屏的优化
- 安卓学习笔记---Android APP内存优化之图片优化
- 安卓app上传
- 安卓app运行机制:
- 安卓app设计规范
- 安卓app角标
- 安卓启动APP
- 安卓app 框架
- 发布App 安卓
- 安卓手写板app
- 安卓App开发
- 安卓APP开发
- 【安卓-自定义布局】安卓App开发思路 一步一个脚印(十三)关于ListView的优化总结
- 安卓优化
- ID3算法
- daemon not running. starting it now on port 5037
- SpringMvc绑定字符串数组和List参数
- 汇编中OF,CF及相关问题
- Linux系统调用(有没有觉得像是设计模式)
- 安卓APP优化归档
- 欢迎使用CSDN-markdown编辑器
- 大型高并发高负载网站的系统架构浅析
- Freemarker string转Integer
- 三天打鱼两天晒网(C语言)
- session 共享
- 空间同构(isomorphic)
- 泛型
- 基于MaxCompute的图计算实践分享-Resolver简介