查看活动生命周期图,我注意到onPause()
和onStop()
都可能导致“进程”被杀死。当用户想要恢复其应用程序时,这将需要调用onCreate()
。关键是onStop()
不一定被调用,也不是onDestroy()
,但onPause()
可能是活动可能看到的唯一事件。在这种情况下,onPause()
必须处理保存应用程序状态,以便用户以后可以返回它,无论是否调用onStop()
。
我可以看到onDestroy()
用于清理在进程终止操作中自然消除的特定于Activity的资源。还有什么其他的onDestroy()
会有用吗?
onStop()
会对什么有益?我为什么要覆盖它?
答案 0 :(得分:4)
如果我的问题是正确的:这取决于您对应用程序的要求。假设您正在使用GPS编程应用程序。在活动不再对用户可见时调用的onStop()
中,您可以删除这些请求。或者,如果您的应用程序正在运行,您可以停止某些服务。或者您可以保存首选项(不推荐,改为在onPause()
中执行),或者您可以关闭与服务器的永久连接.....如果我想到其他任何内容,我会添加更多... < / p>
答案 1 :(得分:2)
如果您已经进一步阅读了该文档,您将看到以下内容:
保存活动状态
简要提及管理活动生命周期的简介 当活动暂停或停止时,活动的状态 保留。这是正确的,因为Activity对象仍然存在 暂停或停止时的内存 - 有关其成员的所有信息 目前的状态仍然存在。因此,用户所做的任何更改 活动内部保留在内存中,以便活动时 返回到前台(当它“恢复”时),这些更改仍然是 那里。
然而,当系统破坏活动以便恢复时 内存,Activity对象被破坏,所以系统不能简单 恢复它的状态完好无损。相反,系统必须重新创建 用户导航回活动对象的活动对象。然而,用户是 不知道系统破坏了活动并重新创建了它, 因此,可能期望活动完全如此。在这 情况,你可以确保有关的重要信息 通过实现额外的回调来保留活动状态 允许您保存有关您的状态的信息的方法 活动,然后在系统重新创建时恢复它 活性。
总结:完成onStop()
后,Activity对象在内存中仍然存在。这将有助于系统恢复活动。
非常基本的例子:考虑您向用户展示您的活动,突然您的朋友给您打电话!你可以理解休息..
所以现在由你决定,应该在哪个事件上发布资源/对象/连接。
答案 2 :(得分:0)
另一个例子是注册和取消注册广播接收器。
请注意,通常这些内容放在onResume和onPause中,但差别很小,但当活动放在另一个活动后面时调用onResume / onPause,当活动在屏幕中不再可见时调用onStart / onStop