2

我对 Android 活动生命周期非常熟悉,但我觉得我遗漏了一些在这里应该很明显的东西。

我有一个多活动 Android 应用程序;它使用静态变量(在应用程序类中)来处理跨不同视图使用的各种对象。当应用程序暂停(退出)并且Android(可能)清理内存以维护前台进程时,就会出现问题。当用户恢复应用程序时,它偶尔(并非总是)似乎回来并在用户离开的 Activity 中恢复,但静态变量为空。更糟糕的是,活动有时似乎在静态变量仍然存在的情况下恢复,但对象中的内部变量为空。

我最终实现了一个简单的完整性检查,它检查静态变量是否为空(以及相关对象的最重要的内部变量),如果失败则返回应用程序以启动。这确实减少了很多问题,但我仍然看到偶尔出现的问题,因为检查每个 resume() 的所有内容根本不切实际。

我真正需要的是,如果 Android 操作系统决定在应用程序处于非活动状态时需要从内存中清除任何非 GC 内容,那么该应用程序需要从头开始重新启动。我觉得应该有一种优雅的方式来做到这一点,但没有注意到文档中的任何内容。

有什么想法吗?其他人如何避免这个问题?

4

1 回答 1

4

如果 Android 决定完全终止您的进程,使用 Application 类来保留状态可能会导致意外行为。查看类似问题的答案, 即您可能应该在 Activity 生命周期回调中使用某种持久性(SharedPreferences 或某些 DB)。

于 2012-09-08T23:58:15.643 回答