原标题:Android应用优化总结

内存泄漏

最常见也是最严重的 :持有Activity 与Context引用,生命周期本该短于应用生命周期,该回收的没被回收掉,导致泄露

检测手段:leakcanary mit等

Handler泄露

new Handler 替换为 静态内部类

将持有当前Activity或Context 对象实例化为WeakReference对象

onDestory 时:handler.removeAllMessageAndCallback(null)

高级方案:仍采用静态内部类,提供CallBack,独立于使用者,避免Activity与Context直接引用

单例泄露

持有的Activity 使用WeakReference ,Context 使用ApplicationContext

去除不必要的Activity引用

泄露不止是Activity 与context,一旦持有比应用生命周期短的其他对象,也会发生泄露

此时需要考虑使用WeakReference

Fragment 之间静态属性引用 泄露

消灭静态属性

静态属性会一直持有当前Activity或Context引用

Fragment之间通讯可使用接口,Activity实现该接口, onAttach 将Activity转换为接口对象

Activity操作Fragmeng方式不变

高级方案:可使用MVVM ,ViewModel方式

Cursor 等游标、流的关闭

数据库操作:增删改查的游标,文件、网络操作流

用后close

List

onDestory销毁List:clear

WebView

onDestory销毁WebView :removeJava、removeAllView

高级方案:多进程

避免原则

尽可能保证持有的对象及时被回收,必须使用Activity的采用WeakReference,能使用ApplicationContext的不使用 当前Context

其他对象生命周期短于应用的,一旦持有了Context或Activity都有可能发生泄露,尽可能采用WeakReference

代码优化 优化的数据结构

HashMap 替换为SparseArray 等

枚举、匿名内部类、反射等

减少使用

布局,涉及过渡绘制等 背景

窗体背景,多余背景,减少过渡绘制有效手段

过渡绘制

include标签(通常用于公共布局组件)、merge(有效减少层级,但会出现不可控因素,属性失效等问题)、viewsub

减少不必要的层级

控件优化

比较突出的:

ImageView 与TextView 呈上下左右关系时,优先考虑

TextView增加drawable属性,即compoundDrawable

布局设置:drawableLeft ,drawableTop, drawableRight,drawableBoottom

图片文字间距使用:drawablePadding

代码设置:setCompoundDrawablesRelativeWithIntrinsicBounds(left,top,right,bottoom)

内存、网络、电池

BitMap的回收,应用不可见的监听,减少app被系统关闭的几率

安装包与第三方

无用资源,大图,图片适配,减少不必要的图片,png替换为.9,简单图片代码实现优先

lib 文件

架构

业务、实现分离

MVP或MVVM等

viewmodel

代码规则:命名,方法数,自解释

目的:便于维护

流程

测试环节

如:用例覆盖,情景覆盖,功能效果与产品需求匹配度等,数据抓取,可考虑以下方案增强

全员测试

开发阶段:

由开发把控,确认主要流程功能完成后打包安排测试,主要为产品确认功能实现情况,及时发现问题,以免后期不断产生功能修改,耽误开发进度

测试阶段:

除测试外所有相关人员,包括但不限于:前后端开发、产品、项目负责人

上线前:

最后的问题发现修改阶段,也是最后的问题修改阶段,避免上线前后发生重大问题

测试次数:

问题修改完一批次之后统一回归,可分为第一轮至第三轮甚至四轮,根据测试及bug情况安排,除第一轮外后续皆主要为回归,最后一轮进行线上环境测试,确认功能与稳定性,正式上线前可考虑发布小范围用户安装包进行用户实际环境测试,俗称灰度

测试用例

测试拿到需求之后可编写测试用例,此用例可指导其他人进行功能验证,减少测试人员压力

目的:控制bug数量,减少测试费时,尽可能的发现隐藏的问题,避免上线后发生重大事故

提升项目质量

数据抓取

可使用Charles,Fiddler

数据类问题可直接由bug测出人员定位,避免其他人浪费时间定位

版本分离

bug分离

上线后的bug确认是否为重大bug是否需要修改,一旦确认可下期修改,则可列为后期版本优先修改内容

api分离

最基本的数据稳定性保持方法

api上线时,安装包未必会及时被上传,此时线上环境已经发生变动,而用户所用仍为老版本,一旦数据不兼容,用户无法正常使用

api可根据app的versioncode与平台等多参数进行数据隔离

问题监测

主要为稳定服务

手段包括但不限于:

真实用户实时崩溃日志:百度等

内嵌的日志收集上传功能

后台统计与收集

开发阶段的崩溃收集:崩溃截取显示上传功能

开发阶段

编写高质量代码

性能优化

leakcanary 内存泄露

findbug bug 、隐藏问题

removed unused resoures 剔除废弃资源

lint 找出隐藏问题,优化代码,重点关注Performance 如泄露,Correctness,Security

大家都在看

805941275 435399051返回搜狐,查看更多

责任编辑:

Android无法优化应用,Android应用优化总结相关推荐

  1. 对Android 开发者有益的 40 条优化建议(转)

    下面是开始Android编程的好方法: 找一些与你想做事情类似的代码 调整它,尝试让它做你像做的事情 经历问题 使用StackOverflow解决问题 对每个你像添加的特征重复上述过程.这种方法能够激 ...

  2. android源代码居中字体,Android (布局优化) TextView实现drawable图标大小 位置与第一行文本居中...

    先看大众点评的购买须知 大众.png 如上图,需求在每条提示语句前加一个小圆点,我刚看到需求就想到用 android:drawableLeft 来做,可做完发现:当TextView内容为单行的时候是没 ...

  3. Android优化五:布局优化

    1.减少布局层级 Google在API文档中建议View树的高度不宜超过10层. 以前我们用Eclipse写代码时,自动生成的模板是以LinearLayout为根节点的,但是后面变成了Relative ...

  4. android布局优化方案,Android启动优化-布局优化

    Android启动优化-布局优化 安卓应用开发发展到今天,已经成为一个非常成熟的技术方向,从目前的情况看,安卓开发还是一个热火朝天的发展,但高级人才却相对较少,如今移动互联网的开发者也逐渐开始注重插入 ...

  5. 【Android 安装包优化】Android 中使用 SVG 图片 ( Android 5.0 以下的矢量图方案 | 矢量图生成为 PNG 图片 )

    文章目录 一.Android 5.0 以下的矢量图方案 二.矢量图生成为 PNG 图片 三.完整的 build.gradle 构建脚本 四.编译效果 五.参考资料 一.Android 5.0 以下的矢 ...

  6. 【Android CPU 优化】Android CPU 调优 ( Trace 文件分析 | Android Profiler 工具 | CPU Profiler 工具 )

    文章目录 一.Android CPU 优化 二.CPU Profiler 工具 三.相关资源 一.Android CPU 优化 在 Android 中 , 出现 动画掉帧 , 页面切换白屏 , 卡顿 ...

  7. 【Android 安装包优化】Android 中使用 7zr 可执行程序 解压缩文件

    文章目录 一.Android 中使用 7zr 可执行程序 解压缩文件 二.完整代码示例 三.参考资料 一.Android 中使用 7zr 可执行程序 解压缩文件 在上一篇博客 [Android 安装包 ...

  8. 【Android 安装包优化】Android 中使用 7zr 可执行程序 压缩文件

    文章目录 一.Android 中使用 7zr 可执行程序压缩文件 二.完整代码示例 三.参考资料 一.Android 中使用 7zr 可执行程序压缩文件 在上一篇博客 [Android 安装包优化]A ...

  9. 【Android 安装包优化】Android 应用中 7zr 可执行程序准备 ( Android Studio 导入可执行 7zr 程序 | 从 Assets 资源文件拷贝 7zr 到内置存储 )

    文章目录 一.Android Studio 导入可执行 7zr 程序 二.从 Assets 资源文件拷贝 7zr 到内置存储空间 三.参考资料 一.Android Studio 导入可执行 7zr 程 ...

  10. 【Android 电量优化】电量优化 ( Battery Historian 环境要求 | 电量分析报告 | 电量优化三原则 | 电量优化注意事项 )

    文章目录 一.Battery Historian 环境要求 二.上传电量报告 三.Battery Historian 电量分析报告 四.电量优化三原则 五.电量优化注意事项 参考 Google 官方文 ...

最新文章

  1. 性能优化工具 MVC Mini Profiler
  2. 一套基于 SpringBoot 的完整高并发电商系统,拿去面试简直不要太好用!
  3. linux网络命令1
  4. const pointer
  5. 完成AOP 顶层设计-JoinPoint
  6. 数据挖掘基础数学知识博客
  7. b区计算机复试国家线,2020研究生考试国家线A区B区有什么区别
  8. JavaScript重难点解析1(数据类型——var、let、const区别,类型补充,“===”、“typeof”、“instanceof”区别,Symbol数据类型)
  9. Android View onVisibilityChanged onAttachedToWindow onDetachedFromWindow
  10. 求极限简单总结 (基础)
  11. netty权威指南 微云_Netty权威指南 第2版.pdf
  12. windows nginx 搭建 图片服务器
  13. (转)隐藏在生活里的量化投资密码
  14. ppi 各代iphone_iPhone全机型尺寸分辨率PPI大全
  15. RT-Preempt笔记
  16. Biotin-PEG2k-NHS,Biotin-PEG2000-NHS,PEG衍生物
  17. 益智java单词游戏_java实现单词搜索迷宫游戏
  18. 天的各种书法_你可知道书法里的各种关系?
  19. C++ string类模板
  20. 从Npm Script到Webpack,6种常见的前端构建工具对比

热门文章

  1. AutoML 与 Bayesian Optimization 概述
  2. 现代程序设计 作业 第1次
  3. 怎么查看父子级目录linux,如何查找linux中特定父目录的所有文件?
  4. python tkinter控件_python tkinter 控件与布局 项目实战
  5. 无法打开虚拟机“Ubuntu2” (D:\software\Ubuntu2.vmx): 未找到文件。 是否从库中移除“Ubuntu2”?
  6. 冯提莫在B站的受欢迎度
  7. vlan为什么能隔离广播域_路由交换技术-VLAN原理及配置
  8. windows。forms.timer设置第一次不等待_面试官:换人!他连 TCP 这几个参数都不懂(一)...
  9. hive left outer join 子查询临时表_基于历史数据的用户访问次数,每天新老用户,日活,周活,月活的hive计算...
  10. 计算机鼠标装有,计算机鼠标装有传感器来监视鼠标的移动情况,如图