如何检测 Cordova 应用程序何时从 Android 插件中的最近菜单中删除?

How can I detect when a Cordova app has been removed from the recents menu, from within an Android plugin?

这似乎是一个奇怪的要求,所以我将只描述我正在尝试做的事情,以及为什么我认为我需要知道任务何时被删除。

本质上,我是想在后台记录位置。我找到了一个关于如何使用 BroadcastReceiverhere 执行此操作的粗略示例,并且我设法实现了它。我可以从 JavaScript.

以编程方式打开和关闭它

但是,当它关闭时我无法管理。我想在用户从最近菜单中滑动主应用程序时将其关闭,而不是在应用程序因内存不足而被销毁时关闭。

我可以在 BroadcastReceiver 检测应用何时不再 运行 中添加检查,但我无法检测它是如何关闭的。

有什么方法可以检测应用程序何时以这种方式关闭吗?

我找到了 onTaskRemoved() 但我不确定在这种情况下如何使用它,或者是否会在应用程序因内存不足而被销毁后调用它。

可以使用服务来完成。

只需使用 activity.startService(<Intent>) 启动服务即可确保在从最近菜单中删除 activity 时调用服务的 onTaskRemoved()

然后服务可以调用一个方法来停止后台更新。就我而言,即 LocationServices.FusedLocationApi.removeLocationUpdates(<GoogleApiClient>, <Intent>);.

BroadcastReceiver 是服务本地的,还是作为其自身的 class 实现的,似乎并不重要。

可以找到有效的实现 here