Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.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 检测应用是否已从最近的应用列表中关闭或被操作系统杀死_Android_Android Activity_Android Lifecycle - Fatal编程技术网

Android 检测应用是否已从最近的应用列表中关闭或被操作系统杀死

Android 检测应用是否已从最近的应用列表中关闭或被操作系统杀死,android,android-activity,android-lifecycle,Android,Android Activity,Android Lifecycle,如果应用程序关闭,我需要执行一些API调用 如果应用程序从最近的应用程序列表中关闭或被android系统杀死,则不会触发onDestroy()和onStop()。但可能有解决办法吗 我试过, 当我尝试(在小米笔记7和Android 9上)时,它失败了,也没有调用它 从评论来看,所有人都同意在Android O中不再调用onTaskRemoved() 那么有谁能帮我找到一种解决方法,特别是在小米、oppo等方面?我想问题不在于当你从最近的列表中删除应用程序时,onTaskRemoved没有被调用。

如果应用程序关闭,我需要执行一些API调用

如果应用程序从最近的应用程序列表中关闭或被android系统杀死,则不会触发
onDestroy()
onStop()
。但可能有解决办法吗

我试过,

当我尝试(在小米笔记7和Android 9上)时,它失败了,也没有调用它 从评论来看,所有人都同意在Android O中不再调用
onTaskRemoved()


那么有谁能帮我找到一种解决方法,特别是在小米、oppo等方面?

我想问题不在于当你从最近的列表中删除应用程序时,
onTaskRemoved
没有被调用。我会说,也许你启动的服务在该应用进入最近的应用列表之前就被终止了

我想,它试图描述前台服务被终止的问题

因此,如果将服务作为前台服务运行,则需要定期执行某些操作以保持服务的活动性。如果以前没有终止服务,我假设您应该能够调用
onTaskRemoved

基于您的用例的建议:

如本回答的评论中所述,您希望在用户离开应用程序时从购物车中删除项目,以便其他用户可以订购

对我来说,这更像是一个设计问题,可以通过多种方式完成。我可以放弃一些建议,但是,我的建议可能不适合你的情况

  • 从服务器端解决此问题:
  • 当用户在购物车中添加项目时,将其添加到购物车时的时间戳值存储在服务器端数据库中
  • 采用购物车项目到期的默认阈值。当来自其他设备的新用户尝试访问同一项目时,请检查时间戳值,如果时间超过阈值时间,则将该项目标记为可用
  • 从服务器端2解决此问题:
  • 依我看,在项目结帐/付款之前,项目始终可用。在您的实现中,如果我可以获得您的API端点,我可以进行简单的脚本攻击,这样我就可以在购物车中保存项目而不必购买它。因此,当前实现中存在一个很容易被利用的严重漏洞。我宁愿把物品放在购物车里,直到有人付钱
  • 如果在有人付款之前,您一直可以订购该商品,那么您可以在付款之前检查该商品的可用性,并告诉客户该商品已经售出
  • 从应用程序端解决此问题:
  • 我想说,我找不到一个好方法来确保调用购物车取消API以从购物车中删除项目。我早些时候提出的解决方案可能仍然有效,但是,恕我直言,这太过分了
  • 如果你使用<代码> OntaskEkter < /Cord>实现,你可以考虑在那里也有一个定时器,这样你也可以有一个阈值,用于在一段时间之后从购物车中移除物品。否则,您将使其他用户永远无法使用该项目(如上所述)

  • 在移动到定期任务之前,
    onTaskRemoved
    从未执行过,尽管服务已经启动。我的手机是小米注7。还有,这里必须有周期逻辑吗?我是否需要如果应用程序已经关闭不需要它运行很长时间你明白我的意思吗?我不确定你的意图,但是,我试图声明,你需要启动作为前台服务的服务,以便用户可以看到服务作为通知或什么运行,即使应用程序在后台。此外,前台服务必须执行一些周期性任务,以保持自身的活力。。保留添加到购物车的服务,如果用户取消预订,我会清除它,但是,如果他关闭了应用呢?我需要的是在应用程序关闭的情况下清除购物车项目。因此,如果你知道从购物车中移除物品的更好方法,请建议为其他用户发布服务。我已经更新了我的答案。请看一看。谢谢大家!@伊戈尔加纳波尔斯基:实际上我不确定。然而,我不建议你也这么做。我们可以使用
    JobScheduler
    或android的前台服务定期检查应用程序是否停止。