【发布时间】:2017-01-16 23:16:41
【问题描述】:
根据Romain Guy的说法,这种代码很容易发生内存泄漏,因为
.... 视图引用了整个活动,因此 您的活动所持有的任何东西;通常是整个视图 层次结构及其所有资源。
@Override
protected void onCreate(Bundle state) {
super.onCreate(state);
TextView label = new TextView(this);
label.setText("Leaks are bad");
setContentView(label);
}
我不清楚。
假设应用程序有 1 个活动,这是寿命最长的对象,可以根据需要重新创建。这意味着它的所有实例字段(可以并且通常是Views)在任何时候都可以为空。
并且任何静态实例字段都将与活动本身存在相同的持续时间。
那么我们如何使用上面或下面的代码来获得内存泄漏:
private static Drawable sBackground;
@Override
protected void onCreate(Bundle state) {
super.onCreate(state);
TextView label = new TextView(this);
label.setText("Leaks are bad");
if (sBackground == null) {
sBackground = getDrawable(R.drawable.large_bitmap);
}
label.setBackgroundDrawable(sBackground);
setContentView(label);
}
【问题讨论】:
标签: java android android-activity memory-leaks