我接受了一次采访,以下内容应该有什么问题?
我可以假设这就是你不能检查一个类是否为null的问题,对吧?!谢谢!
public class NiceActivity extends Activity {
private static AmazingClass a;
class AmazingClass {
int x;
int y;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_nice);
if (a == null) {
a = new AmazingClass();
}
}
}发布于 2015-05-26 22:31:34
内部类不是静态的,这可能会导致它比活动存活时间更长,同时仍然具有对它的引用。这可能会导致活动泄漏。
本文更深入地解释了这个问题:http://www.androiddesignpatterns.com/2013/01/inner-class-handler-memory-leak.html
发布于 2015-05-26 22:37:04
由于内部类AmazingClass不是静态的,因此每个实例都有对外部类(NiceActivity)的隐式引用。
NiceActivity类具有对AmazingClass的引用,并且此引用永远不会被清除。
因此,该活动永远不会被垃圾回收,并且会有内存泄漏。
在模式中,这大致如下所示:
root GC -1-> Activity class -2-> Amazing object -3-> Activity object需要清除标号2或3以避免这种泄漏。
https://stackoverflow.com/questions/30461356
复制相似问题