IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 安卓一些优化点 -> 正文阅读

[移动开发]安卓一些优化点

启动优化

cpu time 和wall time 是profiler 和 systrace中重要的指标

cputime : 代码消耗cpu的时间。walltime : 代码执行时间

需要以cputime 来作为优化的一个方向

使用idleHandler 来实现cpu空闲时间执行耗时任务

黑科技 :类预先加载,在Multidix.index方法后起了一个线程,使用class.forname的方式来触发预先加载

内存优化

1.减少不必要的内存开销 AutoBoxing,使用TraceView查看耗时,如果发现调用了大量的integer.value,就说明发生了AutoBoxing。

? 避免创建不必要的对象 如拼接字符串时使用StringBuilder

2.内存复用;资源复用,视图复用,对象池,bitmap对象复用

3.使用最优的数据类型

4.使用 IntDef和StringDef 替代枚举类型

5.图片内存优化 ?

? ? 设置位图规格 显示小图片使用RGB——565

? ? 位图缩放 inSampleSize

? ? 位图复用 inBitmap

? ? 图片放置优化,放在xxhdpi下在低分辨率设备中只会压缩不会增大内存

? ? item被回收不可见时释放对图片的引用

6.自定义view中? onDraw方法不要创建对象

7.在app可用内存过低时主动释放内存,onLowMemory中释放图片缓存、静态缓存

其他一些?

? ? ? 尽量使用static final优化成员变量 ;使用增强for循环语法;基本数据类型比封装类型有效 int 和Integer;适当采用软饮用和弱引用;

? ? ? 使用静态内部类代替内部类;使用内存缓存和磁盘缓存

对于内存优化,一般都是通过使用MAT等工具来进行检查和使用LeakCanary等内存泄漏监控工具来进行监控,以此来发现问题,再分析问题原因,解决发现的问题或者对当前的实现逻辑进行优化,优化完后再进行检查,直到达到预定的性能指标。

避免内存抖动:

避免在循环体内创建对象,ondraw方法会被频繁调用,不应该频繁创建对象

大量使用bitmap时,试着缓存在数组或容器中实现 服用

能复用的对象,使用对象池复用起来

布局优化

1.使用异步inflate的方式,即AsyncLayoutInflater,对layout异步加载,然后通过handler将view发送到主线程来使用

2.使用X2C的方式,核心原理就是使用xml编写布局,编译时会用apt方式将xml转换为java的方式,省去了IO加载XML布局的耗时过程,也没有反射创建对象的损耗

3.可以使用约束布局来减少嵌套的层级,减少重绘次数。

卡顿优化

使用systrace查看卡顿周期内的cpu状况,结合代码对这个模块代码重构,进行异步和延迟处理。

同时,使用android的消息处理机制,在loop中有一个mLogging对象,在分发message前后被调用,通过监听mlogging来实现自动化检测

通过aop对常见的耗时代码进行Hook,然后对一段时间内获取到的数据进行分析

apk瘦身

1.代码混淆,统一三方库,无用代码删除

2.无用资源删除,资源混淆

3.只保留armeabi So 可以兼容别的cpu架构

4.推进插件化

网络优化

首先需建立线上的网络监控,主要为质量监控和流量监控

质量监控: 请求成功率,每步的耗时,比如dns解析时间,建立连接的时间,接口失败的原因,然后在合适的时间上报给服务器

流量监控: 流量消耗情况,上传到apm后台

1.数据缓存来减少流量消耗,有些配置信息,离线包等接口加上版本号,实现增量更新

2.使用缩略图,用户点击再去加载大图

电量优化

power_profile文件来确定耗电量

Battery Historian 电量分析工具,可以获取各个模块的耗电信息,例如GPS、蓝牙等 只能在线下使用

webveiw优化

1.预加载webview

2、asset存放离线包

3.拦截资源文件下载,使用本地的替换

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-05-05 11:29:59  更:2022-05-05 11:35:27 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 22:27:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码