应用程序的良好实践,当它崩溃时

时间:2012-08-17 21:55:23

标签: android robustness

我的应用程序目前没有崩溃但是我们正在尝试使其非常强大,我们正在做的一件事就是跟踪“某个事件”的时间,直到用户手动停止为止。

我的预期实施

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

关注

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

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

使用广播中的状态发出sendStickyBroadcast(Intent)。在以后任何时候为粘性广播注册一个空接收器,你将拥有最后一个已知的广播状态。如果它失效并不重要。所以你可能在启动时有一个广播等。

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

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

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