Android性能优化

Android的性能优化主要从以下几个方面进行优化的:

  • 稳定(崩溃、内存溢出)
  • 流畅(卡顿)
  • 耗损(耗电、流量)
  • 安装包(APK瘦身)

稳定

获取Android的crash信息

1、实现Thread.UncaughtExceptionHandler

首先需实现一个UncaughtExceptionHandler对象,在它的uncaughtException方法中获取异常信息并将其存储在SD卡中或者上传到服务器供开发人员分析,然后调用Thread的setDefaultUncaughtExceptionHandler方法将它设置为线程默认的异常处理器,由于默认处理器是Thread类的静态成员,因此它的作用对象是当前进程的所有线程。

2、在Application中注册

3、添加权限

内存泄漏

常见的内存泄漏:

  1. 静态引用(自身代码和第三方代码)
  2. 集合内引用
  3. Handler消息未清除
  4. 非静态的内部类中持有外部内的应用
  5. 匿名内部类/非静态内部类和异步线程

检查方法

我使用的是leakCanary工具,

流畅

布局优化

  • 删除布局中无用的控件和层数
  • 有选择的使用性能较低的ViewGroup。
  • 布局复用,采用标签重用layout。<include> <merge> ViewStub
  • 注意使用wrap_content,会增加measure计算成本
  • 提高显示速度,使用延迟View加载
  • 删除控件中无用的属性

绘制优化

  • onDraw方法中不要创建新的局部对象。这是因为onDraw方法可能会被频繁调用。
  • onDraw方法中不要做耗时的任务,也不能执行成千上万次的循环操作。

过度绘制

  • 减少布局层级
  • 去除不必要的背景
  • 优化自定义View的计算

启动优化

视觉体验优化

设置闪屏图片主题,为了更顺滑无缝衔接我们的闪屏页,可以在启动 Activity 的 Theme中设置闪屏页图片,这样启动窗口的图片就会是闪屏页图片,而不是白屏。

    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="android:windowBackground">@drawable/lunch</item>  //闪屏页图片
        <item name="android:windowFullscreen">true</item>
        <item name="android:windowDrawsSystemBarBackgrounds">false</item><!--显示虚拟按键,并腾出空间-->
    </style>

代码优化

https://blog.csdn.net/qian520ao/article/details/81908505

Application优化

我们可以根据这些组件的轻重缓急之分,对初始化做一下分类 :

  • 必要的组件一定要在主线程中立即初始化(入口 Activity 可能立即会用到)
  • 组件一定要在主线程中初始化,但是可以延迟初始化。
  • 组件可以在子线程中初始化。

放在子线程的组件初始化建议延迟初始化 ,这样就可以了解是否会对项目造成影响!

闪屏页业务优化

应用App通常会设置一个固定的闪屏页展示时间,例如2000ms,所以我们可以根据用户手机的运行速度,对展示时间做出调整,但是总时间仍然为 2000ms。

闪屏页政展示总时间 = 组件初始化时间 + 剩余展示时间。

也就是2000ms的总时间,组件初始化了800ms,那么就再展示1200ms即可。

节省 耗电优化

计算优化。算法,for循环优化Switch...case替代if...else、避开浮点运算。

避免Wake Lock使用不当

使用Job Scheduler管理后台任务

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值