android性能优化


Android自带的检测UI渲染的工具

    开发者模式 --- > GPU呈现模式分析 ---> 在屏幕上显示为条形图
        尽量所有的条形图都控制在绿线之下(16ms),如果每次渲染的时间都保持在16ms之内,那么我们看见的UI将是非常流畅测。



布局优化


一、布局层级优化:
    Google在其API文档中建议View的高度不宜超过10层,所以建议使用RelativeLayout代替LinearLayout,提高UI的渲染效率。
    
二、避免嵌套过多的无用布局:
    1. 使用<include>标签重用Layout:
        <include
            layout="@layout/include_ui_layout"
            android:layout_width="150dp"
            android:layout_height="150dp"/>
        注意:这里的layout_width和layout_height属性是会覆盖原布局中的属性的。<include>和<merge>一起使用可以减少布局的层级,其中<merge>作为引用布局的根节点。



    2. 使用ViewStub实现View的延迟加载:
        <ViewStub
            android:id="@+id/vs_test"
            android:layout_width="150dp"
            android:layout_height="150dp"
            android:layout="@layout/include_ui_layout"/>
        viewStub = (ViewStub) findViewById(R.id.vs_test);
        显示的两种方法?
            ① View myViewStub = viewStub.inflate();//只能调用一次(因为inflate之后原来的ViewStub就不存在了)
            ② viewStub.setVisibility(View.VISIBLE);
        与View.GONE的区别?
            <ViewStub>标签只会在显示的时候,才去渲染整个布局。而View.GONE在初始化布局树的时候就已经添加在布局树上了。

内存优化


一、Bitmap优化:
    1. 使用适当分辨率和大小的图片
        使用图片的缩放
    2. 及时回收内存
        一旦使用完Bitmap后,要及时的bitmap.recycle()。android3.0之后,Bitmap被放置在了堆中,其内存由GC管理,就不需要释放了。
    3. 代码优化(创建一个类的实例会消耗大约15字节的内存)
            对常量使用static修饰符
            使用静态的方法:静态方法比普通的方法提高15%左右的访问速度
            减少不必要的成员变量,这点在Android Lint工具上已经集成检测了
            减少不必要的对象
            尽量不要使用枚举、少用迭代器
            对Cursor、Receiver、Sensor、File等对象,要非常注意它们的创建、注册和回收
            使用RenderScript、OpenGL来进行非常复杂的绘图操作
            使用SurfaceView来代替View进行大量、频繁的绘图操作
            尽量使用视图缓存,而不是每次都执行inflate()方法解析视图
     4. 不要让静态成员变量持有当前activity的对象,这样容易引发内存泄露;
         对应无限循环的属性动画必须要在onDestory()里面进行取消animator.cancle(),否则会无限循环下去,而导致内存泄露;
         不要在主线程做耗时操作,避免ANR   




优化工具


一、Lint工具:
    是as中集成的一个android代码的提示工具,它给xml布局、代码提供了强大的帮助。

二、Android Studio的Memory Monitor工具
    是一个内存监视工具;
    当内存持续增高时,可能发生泄漏;内存突然减少时,可能发生GC了。
    如果无法显示:点击 Tools ---> Android ---> Enable adb integration 重新勾选

三、使用TraceView工具:
    1. 通过代码生成精确范围的TraceView日志
        开启监听:Debug.startMethodTracing()
        结束监听:Debug.stopMethodTracing()
        TraceView日志的存放目录默认路径是 "/sdcard/dmtrace.trace",导出文件 adb pull /sdcard/trace_log.trace/local/LOG/
        记得在配置文件中加入权限 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
        
    2. 通过Adnroid Device Monitor生成TraceView:
        点击Adnroid Device Monitor打开界面,然后选择要调试的程序。然后点击"start method profiling"开启监听,再次点击就是关闭监听。

        如下图:


        说明:
        Incl CPU Time 某方法占用cpu的时间
        Excl CPU Time 某方法本身(不包括子方法)占用cpu的时间
        Incl Real Time 某方法真正的执行时间
        Excl Real Time 某方法本身(不包括子方法)真正的执行时间
        Calls + RecurCalls 调用次数+递归回调的次数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值