如何确定Android应用程序何时启动以及何时停止

时间:2015-09-17 17:09:58

标签: android

我有几个服务的android应用程序。 此应用程序应在此应用程序启动时以及何时停止时将报告发送到远程服务器。 但我不知道如何确定应用程序已停止,因为应用程序可能会停止(例如压缩),但服务仍在运行。 我认为算法应该是这样的:

  1. 使用存储的最后日期检查标记(如果此标记存在,则向服务器发送“停止”时间)
  2. 在启动应用程序时向服务器发送“开始”消息
  3. 每隔10分钟,应用程序应在磁盘上写入当前日期和时间标记
  4. 如果我将使用此检查创建服务 - 当内存不足时,android可以终止此单个服务,但应用程序可以正在运行。如果我将在Application类中创建ScheduledExecutorService - 应用程序可以停止,但服务仍然可以运行。

    你能帮我解决一下吗?

2 个答案:

答案 0 :(得分:0)

为什么不尝试信任标准方法Activity? enter image description here

你应该接近onDestroy和/或onPause。这取决于你的逻辑。

此外,您可以尝试覆盖Application.onTerminate()。你可以阅读它(申请)lifecycle here

答案 1 :(得分:0)

这个问题真的没有一个答案。这里有很多次问过SO,但我们可以说它真的取决于我们应用的行为。

您希望在LogonPause()onStop()以及onDestroy() Activity中添加一些onDestroy()条消息1}}。通过查看Logcat中打印的日志,仔细观察应用程序的流程。

很多人都试图依赖Service方法,因为看起来它在应用程序完全终止时被调用,但情况并非总是如此。有时应用程序崩溃(强制关闭)或某些人只是在设置中的应用程序信息中手动强制关闭它。在这种情况下,应用程序不会遵循活动的生命周期。

其中一个建议是创建一个在后台运行的线程并将UDP数据包发送到服务器,表示该应用程序每隔几秒就处于活动状态。

PRO:您不需要与服务器进行握手,因此可以节省从服务器获取响应的时间/资源。

CON:线程运行后台确实使用电池。 UDP只能在最近的Android操作系统的WiFi环境中使用。

希望你找到一个好方法。当您找到一个好的解决方案时,您可能想对您的帖子发表评论,因为人们也想知道如何解决它。