当应用程序被滑动关闭时回调函数

11

我有一个涉及导航的应用程序。 如果用户开始导航,则会创建一种“navigationLifecycleManager”。这将存储在应用程序实例中,以便它可以在配置更改、在活动之间切换等情况下存活。

但是,如果用户“退出”应用程序,则我想要终止一些后台线程,将一些较小的数据存储到应用程序存储中等等。因此,我需要一些挂钩告诉我何时退出应用程序。

  1. 导航应该在任何活动生命周期中保留(这就是为什么它已经在应用程序实例中了)
  2. 导航应该在按下主页按钮时保留。
  3. 导航不应在按下“返回”键结束应用程序时保留。
  4. 导航不应在通过向左滑动从“最近使用的应用程序”列表中滑出它时保留。

大部分都可以通过覆盖“onPause”并检查“isFinishing”来实现。但是,这不能解决从最近使用的应用程序列表中滑动的问题。滑动似乎没有调用任何内容。活动/应用程序中既没有调用“onPause”,也没有调用“onDestroy”或“onTerminate”。


我们能捕获SIGKILL信号吗?或者说我们能否在Windows任务管理器中“知道”我们的应用程序何时被杀死? - Selvin
我猜你的评论是修辞性的,并得出我们无法获得这种信息的结论。你确定知道Android在应用程序被滑动关闭时是如何结束它们的吗?此外,我仍然想知道其他人是如何处理这个问题的。一定有很多人有类似的问题。 - fancy
2
我们可以使用服务的 onTaskRemoved() 方法来检测滑动。 - Yogesh Seralia
@YogeshSeralia 你的答案是正确的。这是唯一知道何时被杀的方法。我点了赞。 - Keyur Thumar
1个回答

6

你无法处理滑动手势,因为系统只会在不调用任何回调的情况下从内存中删除你的进程。

我已经检查过,在用户调用“最近使用应用”屏幕之前,onPause()方法将始终被调用。因此,您需要在onPause方法中保存所有数据,而无需检查isFinishing()

要检查后退按钮,请使用onBackPressed方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接