布局优化:
布局优化的思想就是减少布局文件的层级。
<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 方法要避免执行大量的操作。
- onDraw 中不要创建新的局部对象,因为 onDraw 方法可能会被频繁调用。
- onDraw 中不要做耗时任务,也不能执行成千上万次的循环。
内存泄漏优化:
场景1:静态变量导致的内存泄漏。
场景2:单例模式导致的内存泄漏。
场景3:属性动画导致的内存泄漏。
网友评论