Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.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 onDestroy()未调用-重新访问,因为需要删除所有本地存储的数据_Android_Android Lifecycle - Fatal编程技术网

Android onDestroy()未调用-重新访问,因为需要删除所有本地存储的数据

Android onDestroy()未调用-重新访问,因为需要删除所有本地存储的数据,android,android-lifecycle,Android,Android Lifecycle,所以当你每天学习新的东西时,我喜欢编码。我开发Android已经有一段时间了,我一直认为onDestroy()一直都在被调用。docs说不保证会调用onDestory() 所以我的问题是。如果我要求在应用程序关闭时不存在本地保存的数据,我该怎么做。我编写了onDestroy()代码,当您点击“上一步”按钮进入Android主屏幕时,肯定会调用它 但是,如果我点击Home按钮,然后点击Overview,然后点击Close All/Clear All,则不会调用onDestroy(),并且无法确保所

所以当你每天学习新的东西时,我喜欢编码。我开发Android已经有一段时间了,我一直认为onDestroy()一直都在被调用。docs说不保证会调用onDestory()

所以我的问题是。如果我要求在应用程序关闭时不存在本地保存的数据,我该怎么做。我编写了onDestroy()代码,当您点击“上一步”按钮进入Android主屏幕时,肯定会调用它

但是,如果我点击Home按钮,然后点击Overview,然后点击Close All/Clear All,则不会调用onDestroy(),并且无法确保所有本地数据都已删除

如果我要求关闭应用程序时不存在本地保存的数据,我该怎么做

首先不要在本地保存数据。记住这一切

如果我要求关闭应用程序时不存在本地保存的数据,我该怎么做


首先不要在本地保存数据。将其全部保存在内存中。

已更新

正如注释中所指出的,您应该避免重写onStop,所以我找到了另一种方法,当按下HomeKey时,在onPause(注意这一点)之前调用此方法

@Override
protected void onUserLeaveHint() {
    finish();
    super.onUserLeaveHint();
}
在安卓8.1上测试


注意:正如文档所说,当用户按Home键时,会调用该方法,但当您接到呼叫时,即使活动在Pause上调用,也不会调用该方法。

已更新

正如注释中所指出的,您应该避免重写onStop,所以我找到了另一种方法,当按下HomeKey时,在onPause(注意这一点)之前调用此方法

@Override
protected void onUserLeaveHint() {
    finish();
    super.onUserLeaveHint();
}
在安卓8.1上测试



注意:正如文档所说,当用户按下Home键时,它会被调用,但当您接到一个调用时,即使活动在Pause上调用,也不会调用此方法。

有多个Android生命周期组件带有
onDestroy()
。你指的是哪一个?应用活动?服务还有什么吗?正如我在原始说明中指出的,我需要一种在应用程序终止时删除本地数据的方法。无法使用onDestroy,因为它不能保证。任务何时(我猜)终止。有多个Android lifecycle组件带有
onDestroy()
。你指的是哪一个?应用活动?服务还有什么吗?正如我在原始说明中指出的,我需要一种在应用程序终止时删除本地数据的方法。无法使用onDestroy,因为它不能保证。(我猜)任务何时终止。
onStop()
在许多与“主页”按钮无关的地方被调用。这样更好,尽管在某些情况下,即使这样也不够。例如,我不知道如果用户在多窗口环境中点击不同的活动,是否会调用
onUserLeaveHint()
,以及。这就是我回答“不要保存数据”的原因——有些情况下,你无法获得预期的控制权,我必须假设清除数据的要求必须是万无一失的。我同意,但如果他不能以另一种方式做到这一点,我想这是唯一可能的解决方案,正如这里的OnSerleaveHint所说“当用户选择某个活动即将进入后台时,作为活动生命周期的一部分调用。”唯一的问题是,如果应用程序进入后台,我不想“清理”,只有在应用程序终止的情况下。
onStop()
在许多与“主页”按钮无关的地方被调用。这更好,尽管有时甚至不够。例如,我不知道如果用户在多窗口环境中点击不同的活动,是否会调用
onUserLeaveHint()
。这就是我回答“不保存数据”的原因“--在某些情况下,您无法获得预期的控制权,我必须假设清除数据的要求必须是万无一失的。我同意,但如果他不能以另一种方式做到这一点,我想这是唯一可能的解决方案,正如此处所述“作为活动生命周期的一部分,当用户选择某个活动即将进入后台时调用。”唯一的问题是,我不想“清理”“如果应用程序在后台运行,仅当其已终止时。无法…”。。下载PDF并查看它们。内存不足,无法保存所有内容,因此会将内容写入临时本地;但是,当应用程序终止所有这一切并将其删除时。@justdan0227:没有可靠的方法可以做到这一点,对不起。真的吗?Android在关闭应用程序之前不会给我们最后一个调用?@justdan0227:正确。你应该在那之前把东西清理干净。Android可能会在进程终止之前调用运行活动和服务的
onDestroy()
,但这不是保证。感谢@commonware,这不是一个清理,而是终止时无数据的要求。不能。。下载PDF并查看它们。内存不足,无法保存所有内容,因此会将内容写入临时本地;但是,当应用程序终止所有这一切并将其删除时。@justdan0227:没有可靠的方法可以做到这一点,对不起。真的吗?Android在关闭应用程序之前不会给我们最后一个调用?@justdan0227:正确。你应该在那之前把东西清理干净。Android可能会在进程终止之前调用运行活动和服务的
onDestroy()
,但这不是保证。感谢@commonware,这不是一个清理,而是终止时无数据的要求。