我正在开发一个包含 10 多个活动的 Android 应用程序。我有一些状态对象,我几乎在每个活动中都可以访问它们,为此,它们在 MyApplication 类中实现为全局静态变量。
我注意到只要用户在应用程序中,这种方法就可以了。但是,当他按下主页按钮并打开另一个应用程序,然后通过“最近的活动”按钮返回我的应用程序时,我看到 Android 系统从 MyApplication 重置了静态,所以我必须处理 NullPointerExceptions。我知道这种行为是由Android杀死并重新创建应用程序进程引起的。
我知道保留此类数据的最佳方法是使用 SharedPreferences 或 SQLite,并且我在 onCreate for 中检查 MyState==null 并恢复它没有问题,但问题是我不知道何时正确存储我的状态对象(在首选项或数据库中)。我试图覆盖 MyApplication 的 finalize() - 不好,我看到 onLowMemory 可能不会被调用,我不知道如何使用 onPause、OnStop 等,因为我有太多的活动,序列化反序列化会相当多减慢应用程序。
有什么想法吗?提前致谢!