【发布时间】:2016-02-06 12:59:04
【问题描述】:
我正在尝试针对内存泄漏优化我的应用。我已经阅读了很多博客文章和 SO 问题,并且我看到有些人说要尊重静态声明的变量,以便 GC 可以收集它们,而另一些人则说这是不必要的。
public class MyActivity extends Activity {
private static Context context;
private static ArrayList<String> arrayList = new Arraylist<>();
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
context = this;
arrayList.add("Random strings");
..//Other code
}
@Override
protected void onDestroy() {
context = null;
arrayList.clear();
super.onDestroy();
}
代码背后的原因是静态变量独立于活动生命周期,因此即使在 onDestroy 之后也会隐式保存整个活动上下文的引用,除非它的引用为空。但我已经在我的应用程序中测试了这两种变体,彼此之间没有任何差异。以上真的有必要吗?
【问题讨论】:
-
如果您可以在活动类中使用
this,为什么要使用context = this;;