【问题标题】:How to execute code before Android app is killed如何在Android应用程序被杀死之前执行代码
【发布时间】:2016-06-03 13:31:59
【问题描述】:

我有一个连接到周围设备的 Android 应用当前运行相同的应用即使在后台

为此,我使用 WiF-Direct 来宣传我当前正在运行所述应用程序这一事实。

因此,我需要在应用被终止后立即停止宣传。

  • onDestroy() 不能使用,因为它不能保证被调用。
  • onStop()onPause() 无法使用,因为该应用仍在运行。

我怎样才能做到这一点?

目前,即使应用程序关闭/终止,该服务仍在广告中。

【问题讨论】:

  • 你有扩展的Application类吗?
  • 在从 WiFi Direct 广播之前,您能否检查应用程序是否仍在运行?
  • @liminal 服务广告由应用程序启动时自行启动。所以它显然是在那个时候运行的。这是一个一次性的过程,而不是一个连续的过程。
  • @cricket_007 我应该吗?
  • 我不知道最终用户将如何杀死它,它可能会“关闭所有”应用程序,它可能会滑动它等等......无论如何我已经测试过它和 onDestroy()并不总是被调用。

标签: android android-lifecycle


【解决方案1】:

您应该能够通过服务来做到这一点。

在您的应用启动时启动服务。 覆盖 onTaskRemoved 方法

@Override
public void onTaskRemoved(Intent rootIntent)
{
}

在这个方法中做你必须做的事情。 更详细的答案可以在这里找到:How to know when my app has been killed? (2 answer)

【讨论】:

  • 我将对此进行调查,并将返回结果。谢谢
【解决方案2】:

最好的实现可能是运行另一个服务来查询您的应用在前台(即正在运行)

您可以运行查询以每隔 60 秒定期检查一次。然后,如果应用程序没有运行。您可以停止 WiFi Direct 服务,然后自行停止。

【讨论】:

  • 另一个运行的服务似乎是一个可能的解决方案,但如果我的应用程序仍在运行,应该有比每隔一段时间检查一次更有效的方法。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-03
  • 2020-10-23
  • 1970-01-01
  • 1970-01-01
  • 2011-06-06
相关资源
最近更新 更多