Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android onStop/onDestroy-何时可以使用?_Android - Fatal编程技术网

Android onStop/onDestroy-何时可以使用?

Android onStop/onDestroy-何时可以使用?,android,Android,查看活动生命周期图,我注意到onPause()和onStop()都会导致“进程”被终止。这需要在用户希望恢复其应用程序时调用onCreate()。关键是不一定要调用onStop(),也不一定要调用onDestroy(),但onPause()可能是活动可能看到的唯一事件。在这种情况下,onPause()必须处理保存应用程序状态,以便用户以后可以返回到应用程序状态,而不管是否调用了onStop() 我可以看到onDestroy()被用来清理特定于活动的资源,这些资源自然会在进程终止操作中被消除。还有

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

我可以看到
onDestroy()
被用来清理特定于活动的资源,这些资源自然会在进程终止操作中被消除。还有什么
onDestroy()
适合的吗


那么
onStop()
有什么好处呢?为什么我要覆盖它?

如果我没有弄错你的问题:这取决于你想对你的应用程序做什么。假设您正在编程使用GPS的应用程序。在用户看不到活动时调用的
onStop()
中,可以删除这些请求。或者,如果应用程序正在运行某项服务,则可以停止该服务。或者您可以保存首选项(不推荐,请改为在
onPause()
中保存),或者您可以关闭与服务器的永久连接……如果我想到其他任何事情,我将添加更多…

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


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

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

保存活动状态

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

但是,当系统为了恢复而销毁活动时 内存中,活动对象被破坏,因此系统不能简单地 恢复它,使其状态保持不变。相反,系统必须重新创建 活动对象,如果用户导航回它。然而,用户是 不知道系统破坏了活动并重新创建了活动, 因此,我们可能希望活动与原来完全一样。在这个 在这种情况下,您可以确保有关 通过实现额外的回调来保留活动状态 方法,该方法允许您保存有关系统状态的信息 活动,然后在系统重新创建时将其还原 活动

摘要:完成
onStop()
后,活动对象在内存中仍处于活动状态。这将有助于系统恢复活动

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


因此,现在取决于您,哪些资源/对象/连接应该在哪个事件中释放。

对不起,我指的是
onStop()
,lapsus-mentis.:)我将编辑我的回答,这样听起来就像您使用onStop()来响应不再可见的活动,而onPause()发布GPS提供程序还为时过早。但我担心的是进程终止可能无法正确处理资源的释放。另一个微妙的区别是,如果它们是启动和停止,当不调用onStop,但进程终止时会发生什么?广播接收器是否干净地未注册?我想是的。