15.1.1 布局优化
<include> 标签:减少代码量
<merge>标签:一般和 <include> 标签一起使用从而减少布局的层级。
<ViewStub>标签:ViewStub 继承了 View,它非常轻量级且宽高都是0,正常情况下不会显示
<ViewStub
android:id="@+id/stub_import"
android:inflatedId="@+id/panel_import"
android:layout="@layout/layout_network_error"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
两种加载方式
((ViewStub) findViewById(R.id.panel_import)).setVisibility(View.VISIBLE);
View viewStub = ((ViewStub) findViewById(R.id.panel_import)).inflate();
使用场景比如:网络出错时显示。
15.1.2 绘制优化
绘制优化指 View 的 onDraw 方法要避免执行大量的操作;
不要在 onDraw 中创建对象,因为 onDraw 会被频繁调用
不要在 onDraw 中做耗时任务。
15.1.3 内存泄漏优化
场景1:静态变量导致的内存泄漏
public class MainActivity extends Activity {
private static Context sContext;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sContext = this;
}
}
上面代码会导致 Activity 无法正常销毁,因为静态变量应用了它。
场景2:单例模式导致的内存泄漏
单例模式的生命周期与 Application 一致。
场景3:属性动画导致的内存泄漏