美文网首页
Android性能优化

Android性能优化

作者: L_Xian | 来源:发表于2016-05-27 17:33 被阅读62次

    布局优化:
    布局优化的思想就是减少布局文件的层级。

    <include>标签:将一个指定的布局文件加载到当前的布局文件。
    <include>标签只支持以 **android:layout_ **开头的属性,其他不支持,id 除外。

    <merge>标签:一般与<include>标签一起使用减少层级。由于当前布局是一个竖直方向的 LinearLayout,这时候如果被包含的布局文件也采用竖直方向的 LinearLayout,那么显然被包含的 LinearLayout 是多余的,这时候可以通过<merge>标签去掉多余的那一层 LinearLayout。

    ViewStub:继承了 View,且宽高为 0,因此本身不参与任何的布局和绘制。意义是加载所需的布局文件。比如,网络异常时的界面,在正常情况下是不显示的,那么就可以通过 ViewStub 做到在使用的时候再加载。

    <ViewStub
       android:id="@+id/stub_import"
       android:inflatedId="@+id/panel_import"
       android:layout="@layout/layout_network_error"
       android:layout_width="match_parent"
       android:layout_height="wrap_parent"
       android:gravity="bottom"/>
    

    在需要加载 ViewStub 中的布局时,可以这样:

    ((ViewStub)findViewById(R.id.stub_import)).setVisibility(View.VISIBLE);
    

    或者

    View importPanel = ((ViewStub)findViewById(R.id.stub_import)).inflate();
    

    绘制优化:
    绘制优化是指 View 的 onDraw 方法要避免执行大量的操作。

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

    内存泄漏优化:
    场景1:静态变量导致的内存泄漏。

    场景2:单例模式导致的内存泄漏。
    场景3:属性动画导致的内存泄漏。

    相关文章

      网友评论

          本文标题:Android性能优化

          本文链接:https://www.haomeiwen.com/subject/mpkfdttx.html