我有一个涉及导航的应用程序。
如果用户启动导航,则会创建一种"navigationLifecycleManager"。它存储在应用程序实例中,以便在配置更改,活动等之间切换时幸免于难。
但是,如果用户"退出"应用程序,我想杀死一些后台线程,将一些次要数据存储到应用程序存储中,依此类推。所以我需要一些钩子告诉我应用程序何时退出。
导航应该在任何活动生命周期中存活(这就是为什么它仍然在应用程序实例中)
按下主页按钮后导航应该存在。
通过按"后退",导航不应该在应用程序结束时继续存在。
通过将其从"最近的应用程序"列表中滑出来导航时,导航不应该存在。
必须通过覆盖"onPause"并检查"isFinishing"来实现。但这并不能解决最近的应用程序列表中的问题。滑动似乎没有任何东西。在活动/应用程序中不调用"onPause","onDestroy"或"onTerminate"。
我们能抓住SIGKILL吗? 或者,当我们的应用程序在Windows上被任务管理器杀死时,我们可以"了解"吗?
我猜你的评论是修辞,并得出结论,我们没有得到这种信息。 您是否知道Android在刷掉应用程序时是如何结束应用程序的? 我还想知道其他人如何处理这件事。 必须有很多人有类似的问题。
我们可以使用service的onTaskRemoved()方法来检测滑动。
@YogeshSeralia你的ans是对的。 这是了解何时被杀的唯一方法。 我投了票。
可能重复的如何通过在Android中刷卡杀死应用程序时处理代码?
您无法处理滑动,因为系统只是从内存中删除您的进程而不调用任何回调。
我已经检查过,在用户调用"最近的应用程序"屏幕之前,将始终调用onPause()。 因此,您需要在onPause方法中保存所有数据而不检查isFinishing()。
要检查后退按钮,请使用onBackPressed方法。