【问题标题】:How can we guarantee that onPause will be called?我们如何保证 onPause 会被调用?
【发布时间】:2014-09-01 07:39:41
【问题描述】:
【问题讨论】:
标签:
android
onpause
ondestroy
【解决方案3】:
几乎可以肯定onPause() 总是会被调用。原因是“系统”极不可能主动杀死活跃的(即可见的)Activity。
为了释放资源,Android 操作系统有效保留终止休眠进程的权利,尤其是那些长期运行但最近未使用的进程。为了使您的Activity(及其进程)符合此条件,在某些时候您必须将Activity 发送到后台状态,例如,按下HOME 或启动另一个应用程序的Activity。您的Activity 不再可见的简单事实意味着它将被暂停并且onPause() 将被调用。几乎可以肯定,Activity 将被停止,onStop() 也将被调用。
您必须记住的是,Android 已经存在了一段时间,早期设备的 RAM 以 100 MB 为单位,系统行为可能性和文档反映了这一点。最新设备的 RAM 以 GB 为单位(甚至是 10 GB),因此除非用户真的将他们的设备推到其资源的限制范围内,否则不太可能主动清理应用程序进程。
【解决方案4】:
您可以显示对话框让用户相应地进行操作。当打开对话框询问用户是否要退出时,Activity 肯定会调用 onPause(),此时您可以编写游戏状态保存代码。最好在 onPause() 上编写代码,因为 onDestroy() 上的资源由操作系统释放。