当前位置: 首页 > news >正文

Android性能优化方案

1.启动优化: application中不要做大量耗时操作,如果必须的话,建议异步做耗时操作
2.布局优化:使用合理的控件选择,少嵌套。(合理使用include,merge,viewStub等使用)
3.apk优化(资源文件优化,代码优化,lint检查,.9.png,合理使用shape替代图片,webp等)
4.性能优化,网络优化,电量优化:
避免轮询,尽量使用推送。
应用处于后台时,禁用某些数据传输
限制访问频率,失败后不要无限重连
选用合适的定位服务(GPS定位,网络定位,被动定位)
使用缓存
startActivityForResult替代发送广播
5.内存优化:
循环尽量不使用局部变量
避免在onDraw中创建对象,onDraw会被频繁调用,容易造成内存抖动。循环中创建大的对象,也是如此。
不用的对象及时释放
数据库的cursor及时关闭
adapter使用缓存
注册广播后,在生命周期结束时反注册
及时关闭流操作
图片尽量使用软引用,较大的图片可以通过bitmapFactory缩放后再使用,并及时recycler。另外加载巨图时不要 使用setImageBitmap或setImageResourse或BitmapFactory.decodeResource,这些方法拿到的都是bitmap的对象,占用内存较大。可以用BitmapFactory.decodeStream方法配合BitmapFactory.Options进行缩放
避免static成员变量引用资源耗费过多实例
避免静态内部类的引用

具体可以参考:Android:最全面&详细的性能优化攻略(含内存优化、内存泄漏、绘制优化、布局优化、图片优化、APK优化、多线程优化、列表优化等)

补充电量优化:Android 电量优化概览 

Android电量/功耗优化指南

几个常用的性能测试工具:Prefetto, Emmagee,Systarce。如果需要更加深入直观具体的分析可以使用这几个工具。教程很多,直接搜就好。

工具推荐教程:Perfetto详细解析

Android 性能测试工具- Emmagee 

如果不想下载这些测试工具,也可以用AS自带的检测工具:

AndroidStudio自带的内存泄漏检测工具Profiler:

1.用Android Studio打开当前应用项目,连接手机,打开当前项目App;

点击编辑器上面的这个图标启动应用,就可以看到底部的Profiler视图显示的CPU,内存,网络的使用情况:(如果底部没有Proflier视图,可以在View->Tool Windows->Profiler调出)

 2、 开启完成,已连接。此时正常使用你的App功能,把可能出现内层泄漏的模块测试一下;

3.测试完成,直接点击MEMORY,选择capture_heap dump,然后点击record。记录下你的测试的内层泄漏日志

4.第3步生成内层泄漏日志之后,后面会显示内层泄漏个数和方法列表。如果Leaks的数目不是0,就会出现内层泄漏个数并显示黄色叹号。这个时候找到下方显示黄色叹号的方法类。右键找到对应references方法。再根据references对应的类名,找到在项目中调用它的地方。然后就找到内层泄漏的地方啦。

http://www.lryc.cn/news/356515.html

相关文章:

  • 视频监控平台AS-V1000 的场景管理,一键查看多画面视频的场景配置、调用、管理(一键浏览多路视频)
  • 微服务架构五大设计模式详解,助你领跑行业
  • 【problem】解决EasyExcel导出日期数据显示为#####问题
  • Pytest用例自定义 - 重复、并行、串行
  • 前端项目上线
  • redis基本数据结构与应用
  • Python pands使用引擎实现excel条件格式
  • 基于 vuestic-ui 实战教程 - 登录篇
  • SAPUI5基础知识2 - 手动创建一个SAPUI5的项目
  • 设计模式--访问者模式
  • onnx模型转换到rknn脚本
  • 防御恶意爬虫攻击
  • 【自动驾驶技术栈学习】2-软件《大话自动驾驶》| 综述要点总结 by.Akaxi
  • SRS视频服务器应用研究
  • 没有括号的字符串四则运算
  • vue2 $set 后期添加响应式数据的问题,使用vm.$set()
  • 笔记-X86下用Docker运行ARM64编译Libreoffice
  • 力扣:92. 反转链表 II(Java)
  • [less配置]vue2引入less
  • 物理内存与虚拟内存的区别
  • MySQL数据库案例实战教程:数据类型、语法与高级查询详解
  • 操作系统——用户态与内核态、同步与异步、阻塞与阻塞
  • C# VSTO读取Excel单元格Value、Value2
  • 如何快速从手动测试转向自动化测试
  • 【Linux+Docker】修改Docker容器中的hosts文件
  • 在VS Code中进行Java的单元测试
  • 国内信创web中间件生态
  • CSS中的writing-mode属性:解锁文本布局新维度
  • SQL面试题练习 —— 波峰波谷
  • 检索模型预训练方法:RetroMAE