2012-09-08 130 views
0

我对Android活动生命周期非常熟悉,但我觉得我错过了一些在这里应该很明显的东西。如何让Android应用程序从暂停状态恢复并恢复正常

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

我最终实现了一个简单的完整性检查,检查的静态不清零(也是最重要的内相关对象的变量),并返回该应用启动,如果它失败。这确实减少了很多问题,但我仍然偶尔会看到这个问题,因为检查每个简历()的一切都是不切实际的。

我真正需要的是应用程序从头开始重新启动,如果是Android OS决定它需要从内存中清除任何非GC而应用程序是无效的。我觉得应该有一个优雅的方式来做到这一点,但没有注意到文档中的任何内容。

有什么想法?别人如何避免这个问题?

回答

3

如果Android决定完全终止进程,那么使用Application类保留状态可能会导致意外的行为。检出this answer to a similar question 即您应该在您的Activity生命周期回调中使用某种持久性(SharedPreferences或某些数据库)。

+0

感谢您参考该帖子。持久性的问题在于,每次用户切换活动(需要太多时间)时,保存和恢复状态并非切实可行 - 并且应用程序状态完全持久将是相当困难的。不过,这个链接给了我一些想法。 –