java - static Stack<Activity> 会导致内存泄漏吗?

标签 java android memory-leaks

我创建了一个对象来管理 Activity 。像这样:

public class ActivityManager {
    private static ActivityManager instance;
    private static Stack<Activity> activityStack;

    public void addActivity(Activity activity) {
        activityStack.add(activity);
    }
}

我在 BaseActivity 中使用它:

public class BaseActivity extends AppCompatActivity {
    protected String TAG = "BaseActivity";
    protected ActivityManager mActivityManger;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        mActivityManger = ActivityManager.getInstance();
        mActivityManger.addActivity(this);

    }
}

在此示例中,静态对象持有 Activity 的引用。

这是内存泄漏吗?

为什么 leakcanary 什么都没发生?

如果集合中的添加函数将保存 Activity 的引用?

最佳答案

尝试故意泄露一些东西,例如将您的启动器 Activity 实例分配给静态字段。

或者尝试按回,我相信这会在 Activity 被销毁后触发泄漏(并且会出现 toast )并且 LeakCanary 将检测它是否泄漏。

或尝试引用here另一个样本

关于java - static Stack<Activity> 会导致内存泄漏吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47217495/

相关文章:

java - 从 SQLite 中选择包含给定值的行

performance - 为什么一些分离的 DOM 与作为保留对象的原生 HTML 元素有未知的距离?

java - 通过链接的 docker 容器将正确的 ip 从 nginx 传递到 jetty

java - 如何在 Java String 中用一个双引号替换两个双引号?

javascript - 从 Phonegap/Cordova 应用程序发出安全的 API 请求

android - Firebase 查询数据

javascript - 当我销毁保留在初始配置中的 ExtJs 网格对象时,导致大量内存泄漏,如何正确删除此初始配置?

c++ - 我遇到了内存泄漏,但我不知道为什么

java - Android 如何响应主页点击

java - 使用 JAVA 将 CSV 转换为 XML