其他分享
首页 > 其他分享> > android-即使实例在onDestroy()方法中设置为null,活动仍然泄漏

android-即使实例在onDestroy()方法中设置为null,活动仍然泄漏

作者:互联网

我在主要活动(NavigationActivity)中陷入了内存泄漏

public static NavigationActivity navigationActivity;

public static NavigationActivity getNavigationActivity() {
    return navigationActivity;
}

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

    navigationActivity = NavigationActivity.this;

}

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

它在哪里泄漏?以及如何解决?任何帮助,将不胜感激.非常感谢你.

我正在使用泄漏金丝雀,这就是泄漏
enter image description here

解决方法:

尝试使用

@Override
protected void onStop() {
    super.onStop();
    navigationActivity = null;
}

但是使用Activity的静态引用是非常糟糕的做法,请不要这样做.

在大多数情况下,您可以使用activity.this引用或类似getActivity()方法的东西.

标签:memory-leaks,leakcanary,android
来源: https://codeday.me/bug/20191026/1938341.html