为什么说静态活动在Android中是一种不好的做法

时间:2017-01-12 08:34:28

标签: java android memory-leaks garbage-collection

public static MainActivity mainActivity ;

public static MainActivity instance() {
    return mainActivity  ;
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_navigation);
    mainActivity  = this;

}

@Override
protected void onDestroy() {
    super.onDestroy();
    if (mainActivity  != null) {
        mainActivity  = null;       
    }      
}

为什么内存泄漏?为什么我们说写这篇文章非常糟糕? 我想从GC原理中理解它。

1 个答案:

答案 0 :(得分:0)

onDestroy并不总是被调用,如果不是,你就会泄漏。总是调用onStop,如果你将mainActivity设置为null,那么你可能没有泄漏。但我想知道为什么你会需要这个。

另外,你的:

public static MainActivity instance() {
    if(mainActivity == null){
         mainActivity  = this;
    }
    return mainActivity  ;
}

是静态的并使用"这个",我不认为这是可能的。没有"这个"用静态方法。