public static class GoBack {
public static Stack<Bundle> goBackStack;
}
在我的 android 应用程序中,我编写了一个父类为 Application 的类,我声明了一个内部类,如上面的代码。
我的问题是,在我的应用程序在后台运行了很长时间然后回到应用程序后,goBackStack 始终为空。我不知道为什么?我该如何避免呢?
public static class GoBack {
public static Stack<Bundle> goBackStack;
}
在我的 android 应用程序中,我编写了一个父类为 Application 的类,我声明了一个内部类,如上面的代码。
我的问题是,在我的应用程序在后台运行了很长时间然后回到应用程序后,goBackStack 始终为空。我不知道为什么?我该如何避免呢?
goBackStack
当 Android 决定终止您的应用程序时,您将立即变为 null。由于此变量在其他地方初始化,因此在重新启动您的应用程序后它仍然为空(因为它没有在第二次初始化)。
解决方案很简单——不要考虑静态变量,因为它们是持久存储。他们不是。改用SharedPreferences
,SQLite
数据库或文件系统。
问题是你的整个过程最终都被杀死了。垃圾收集器不会收集静态引用的对象。
查看重新初始化您的数据或使用onSavedInstanceState
. 或者,您可以考虑使用数据库或SharedPreferences
持久化数据。