android os决定调用gc的策略是什么?

时间:2012-08-14 12:41:24

标签: java android garbage-collection

public static class GoBack {
    public static Stack<Bundle> goBackStack;
}

在我的Android应用程序中,我编写了一个父类为Application的类,我将内部类声明为上面的代码。

我的问题是,在我的应用程序在backgroud中运行了很长时间然后回到应用程序后,goBackStack始终为null。我不知道为什么?我怎么能避免它?

2 个答案:

答案 0 :(得分:1)

您的goBackStack会立即变为空,因为Android决定终止您的应用。由于此变量在其他地方初始化,因此在重新启动应用程序后它仍然为空(因为它未在第二次初始化时)。

解决方案很简单 - 不要考虑静态变量,因为它们是持久存储。他们不是。请改用SharedPreferencesSQLite数据库或文件系统。

答案 1 :(得分:0)

问题是你的整个过程最终都会被杀死。垃圾收集器不会收集静态引用的对象。

查看重新初始化数据或使用onSavedInstanceState。或者,您可以查看使用数据库或SharedPreferences来保存数据。