我的应用目前没有崩溃,但我们正在努力让它变得非常健壮,我们正在做的一件事是跟踪“某些事件”的时间,直到它被用户手动停止。
我的预期实现
这就是我计划实现的方式。我打算这样做,所以当他们提交初始“事件”时,它开始计时并开始初始时间和我们 SQLite 数据库中事件的其余部分。然后在同一个提交屏幕上会出现一个按钮来停止为事件计时。我们希望对事件进行准确的时间跟踪。我会在首选项中设置一个标志,表示有一个正在进行的事件和另一个具有唯一 ID 的首选项。
关注
所以我担心的是:如果应用程序崩溃或发生一些不好的事情,我想给这个人一个选项来更改事件的结束时间。 我打算通过以下两种方式之一来做到这一点: 1. 当应用程序再次启动时进行检查(如果有办法这样做),询问标志是否仍然设置,以及应用程序是否刚刚启动。然后给他们这个选项来编辑。 2. 如果它存在,调用 onTerminate 方法或 android 在关闭时使用的 something 即使它崩溃了。同样,我不知道这是否存在。
有什么建议吗?
最佳答案
使用广播中的状态发出 sendStickyBroadcast(Intent)。在以后的任何时间为粘性广播注册一个空接收器,您将拥有最后一个已知的广播状态。如果它下降了也没关系。所以你可能在启动时有一个广播等。
当然,当应用程序再次启动时,您会想要收听 ON_BOOT_COMPLETED Intent 广播。
也不要指望 Android 在崩溃时调用任何特定方法。
一般原则是这样的:如果有重要的东西要保存(包括状态),立即执行,例如发布 stickyBroadcast 或存储为 SharedPreference。不要等待任何特定的回调或崩溃事件处理。没有什么不能通过立即保存状态信息并处理 ON_BOOT_COMPLETE 或检查 SharedPreferences 中的第一个启动值来处理的。这实际上与校验和没有什么不同。开始您的 Activity 就是消息的开始。你也应该有一个消息结束。或事件事件结束。如果你没有看到它,你就没有成功。只需经常发布最后一个状态,并相应地恢复。
关于android - 应用程序崩溃时的良好做法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12013686/