3

我的应用程序目前没有崩溃,但我们正在努力让它变得非常健壮,我们正在做的一件事是跟踪“某些事件”的时间,直到它被用户手动停止。

我的预期实施

这就是我计划实施的方式。我打算这样做,所以当他们提交初始“事件”时,它开始计时并在我们的 SQLite 数据库中启动初始时间和事件的其余部分。然后在同一个提交屏幕上会出现一个按钮,用于停止对事件进行计时。我们希望对事件进行准确的时间跟踪。我会在首选项中设置一个标志,表示有一个正在进行的事件和另一个具有其唯一 ID 的首选项。

忧虑

所以我担心的是:如果应用程序崩溃或发生了不好的事情,我想给这个人一个选项来更改事件的结束时间。我打算通过以下两种方式之一执行此操作: 1. 检查应用程序何时再次启动(如果有办法这样做),询问标志是否仍然设置,以及应用程序是否刚刚启动。然后给他们这个选项来编辑。2.如果存在,调用onTerminate方法或android在关闭时使用的东西,即使它崩溃了。再说一次,我不知道这是否存在。

有什么建议么?

4

1 回答 1

1

使用广播中的状态发出 sendStickyBroadcast(Intent)。在以后的任何时候为粘性广播注册一个空接收器,您将拥有最后一个已知的广播状态。跌了也没关系。因此,您可能会在启动时进行一次广播等。

当应用程序再次启动时,当然是您想要收听的 ON_BOOT_COMPLETED 意图广播。

也不要指望 Android 在崩溃时调用任何特定方法。

一般原则是这样的:如果有重要的东西要保存(包括状态),请立即执行,例如发出 stickyBroadcast 或存储为 SharedPreference。不要等待任何特定的回调或崩溃事件处理。通过立即保存状态信息并处理 ON_BOOT_COMPLETE 或检查 SharedPreferences 中的第一个启动值是否无法处理任何事情。这实际上与校验和没有什么不同。开始您的活动是消息的开始。你也应该有一个消息结束。或事件事件的结束。如果你没有看到它,你就没有成功。只需经常发出最后一个状态,并相应地恢复。

于 2012-08-17T23:03:27.820 回答