Android onStop / onDestroy - 什么时候可以使用?

时间:2011-08-29 21:47:10

标签: android

查看活动生命周期图,我注意到onPause()onStop()都可能导致“进程”被杀死。当用户想要恢复其应用程序时,这将需要调用onCreate()。关键是onStop()不一定被调用,也不是onDestroy(),但onPause()可能是活动可能看到的唯一事件。在这种情况下,onPause()必须处理保存应用程序状态,以便用户以后可以返回它,无论是否调用onStop()

我可以看到onDestroy()用于清理在进程终止操作中自然消除的特定于Activity的资源。还有什么其他的onDestroy()会有用吗?

onStop()会对什么有益?我为什么要覆盖它?

3 个答案:

答案 0 :(得分:4)

如果我的问题是正确的:这取决于您对应用程序的要求。假设您正在使用GPS编程应用程序。在活动不再对用户可见时调用的onStop()中,您可以删除这些请求。或者,如果您的应用程序正在运行,您可以停止某些服务。或者您可以保存首选项(不推荐,改为在onPause()中执行),或者您可以关闭与服务器的永久连接.....如果我想到其他任何内容,我会添加更多... < / p>

答案 1 :(得分:2)

如果您已经进一步阅读了该文档,您将看到以下内容:

  

保存活动状态

     

简要提及管理活动生命周期的简介   当活动暂停或停止时,活动的状态   保留。这是正确的,因为Activity对象仍然存在   暂停或停止时的内存 - 有关其成员的所有信息   目前的状态仍然存在。因此,用户所做的任何更改   活动内部保留在内存中,以便活动时   返回到前台(当它“恢复”时),这些更改仍然是   那里。

     

然而,当系统破坏活动以便恢复时   内存,Activity对象被破坏,所以系统不能简单   恢复它的状态完好无损。相反,系统必须重新创建   用户导航回活动对象的活动对象。然而,用户是   不知道系统破坏了活动并重新创建了它,   因此,可能期望活动完全如此。在这   情况,你可以确保有关的重要信息   通过实现额外的回调来保留活动状态   允许您保存有关您的状态的信息的方法   活动,然后在系统重新创建时恢复它   活性。

总结:完成onStop()后,Activity对象在内存中仍然存在。这将有助于系统恢复活动。

非常基本的例子:考虑您向用户展示您的活动,突然您的朋友给您打电话!你可以理解休息..

所以现在由你决定,应该在哪个事件上发布资源/对象/连接。

答案 2 :(得分:0)

另一个例子是注册和取消注册广播接收器。

请注意,通常这些内容放在onResume和onPause中,但差别很小,但当活动放在另一个活动后面时调用onResume / onPause,当活动在屏幕中不再可见时调用onStart / onStop