性能

安卓性能五大方面

  1. 布局
    • hierarchyView查看measure,layout,draw方法的耗时
    • 是否存在过度绘制:
      比如Activity自带的那一层背景一般都不需要。在自己的AppTheme里面去除该背景色即可:
<style name="AppTheme" parent="android:Theme.Light.NoTitleBar">
    <item name="android:windowBackground">@null</item>
</style>

或者在Activity的onCreate方法中:

getWindow().setBackgroundDrawable(null);

写布局需注意

尽量不要嵌套使用RelativeLayout.
尽量不要在嵌套的LinearLayout中都使用weight属性.
Layout的选择, 以尽量减少View树的层级为主.
去除不必要的父布局.
善用TextView的Drawable减少布局层级
如果H Viewer查看层级超过5层, 你就需要考虑优化下布局了~

ListView优化

contentView复用
引入holder来避免重复的findViewById.
分页加载

2、 内存
* 内存泄漏的几种情况:通过Analyze->Inspect code->选择检查的代码范围。
* 非静态内部类会持有Activity的引用,例如handler,thread,ansynctask。
* 用SparseArray代替HashMap可节省内存。(因为SparseArray的结构更简单)。
* 对于linearlayout布局要设置android:baselineAligned=”false”,可以加快layout的计算渲染速度。而且避免textview基线对齐导致的布局混乱。
* 在布局进行嵌套使用时,父布局与子布局都使用了android:layout_weight,但不是必须使用时,可去除子布局中非必须使用的android:layout_weight。
* 包含imageviwe和textview的linealayout采用textview的drawablexxx代替,提高效率。
* 无用的层级导致的渲染效率降低。
* widowbackground设置为nulll。
* 注册未取消造成的内存泄露
* 集合中对象没清理造成的内存泄露
*
*
* 频繁的申请内存对象和和释放对象,可以考虑Pool 池: 例如listview的RecycleBin,handler的Message.obtain.线程池。

3、 加载速度
traceview观察到application的oncreate方法的imageloader的初始化方法很占用cpu时间,后来将一些不需要在主线程执行的放进非UI线程中执行。再后来使用glide加载图片。
开辟单独的子线程来处理耗时事务.
降低非ui线程的优先级

Activity的所有生命周期回调 Service BroadcastReceiver的onReceive回调 没有使用子线程的looper的Handler的handleMessage, post(Runnable) AsyncTask的回调中除了doInBackground, 其他 View的post(Runnable)是执行在主线程的.

布局优化

过度绘制

  • Activity的背景,即windowbackground。
  • 不必要的background
  • imageview的background

渲染效率

  • textview的drawable
  • linearlayout 设置基线对齐

减少绘制

  • 利用viewstub减少
  • 减少层级
  • 减少relativelayout嵌套
  • 减少linearlayout父布局与子布局都使用weight的情况。
  • 重用view 比如listview

加载速度

traceview观察到application的oncreate方法的imageloader的初始化方法很占用cpu时间,后来将一些不需要在主线程执行的放进非UI线程中执行。再后来使用glide加载图片。开辟单独的子线程来处理耗时事务.

内存优化

频繁的申请内存对象和和释放对象,可以考虑Pool 池: 例如listview的RecycleBin,handler的Message.obtain.线程池。

  • 用SparseArray代替HashMap可节省内存。
  • *

bitmap 的优化

内存泄漏

  • 非静态内部类会持有Activity的引用,例如handler,thread,ansynctask。

  • 注册未取消造成的内存泄露

  • 集合中对象没清理造成的内存泄露
  • *
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值