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

标签 android memory-leaks leakcanary

我的主 Activity (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() 方法。

关于android - 即使在 onDestroy() 方法中将实例设置为 null,Activity 仍然会泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39566883/

相关文章:

android - Android中 "screen size"和 "screen density"的区别?

android - 允许矩形可点击 - android

android - Android 服务实例是否被重用?

java - 在Java中将线程更改为进程

c# - .Net 内存跟踪中的 "TargetCore"是什么?

android - 使用 LeakCanary 在 AppCompatActivity 上发生内存泄漏

Android 泄漏金丝雀 - 泄漏空 Activity

java - Android - Honeywell Dolphin - 如何检测激光扫描仪

objective-c - SKPhysicsBody bodyWithPolygonFromPath 内存泄漏

leakcanary - LeakActivity 泄漏显示在 Leak Canary 上