在关闭android应用之前,放置执行代码的可靠位置是什么?

时间:2018-06-28 22:20:33

标签: android activity-finish ondestroy

我想在关闭应用程序之前使系统上的用户脱机并删除一些文件和其他内容。我尝试将其放入ondestroy,但代码未执行。暂停时调用onstop,这不是我想要的。有想法吗?

3 个答案:

答案 0 :(得分:0)

根据Google的文档,您不能依赖onDestroy()方法来实现您要执行的操作。

  

在销毁活动之前执行所有最终清除。发生这种情况的原因可能是活动即将结束(有人在其上称为finish(),或者因为系统正在临时销毁此活动实例以节省空间。您可以使用isFinishing()方法来区分这两种情况。注意:不要指望这种方法被称为保存数据的地方!

也许最好在问题中具体说明您想做什么以及为什么需要在关闭应用程序之前完成它。您也可以看看WorkManager,它是在今年的Google IO中提出的。即使您的应用被强制关闭,它也可以确保您的任务得以运行。

答案 1 :(得分:0)

您拥有的一个选择是创建并运行服务,然后使用方法onTaskRemoved。有关详细信息,请参见此答案-https://stackoverflow.com/a/26882533/5909655

答案 2 :(得分:0)

https://developer.android.com/guide/components/activities/activity-lifecycle

暂停后出现onStop()和onDestroy。似乎onStop()是您希望在特定情况下使用的地方。查看上面的文档。如果这样不能帮助您发布更多详细信息

编辑:再次阅读您的问题后,我想出了一个可能的解决方案: 当您手动暂停并且不希望断开连接时,可以设置一个标志,例如"STAY_ONLINE"并在onStop()

If (flag=="STAY_ONLINE") {//do something}
else {//disconnect the user}

(抱歉格式化,我在电话上:))