android - 应用程序崩溃时的良好做法

标签 android robustness

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

我的预期实现

这就是我计划实现的方式。我打算这样做,所以当他们提交初始“事件”时,它开始计时并开始初始时间和我们 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/

相关文章:

android - Intent.ACTION_VIEW 不允许在图库应用程序中进行编辑

Android - 顶部带有圆角的可绘制对象仅在 v14 以下不起作用

android - 屏幕打开后对话框消失

php - 检查NFS共享是否在PHP中启动

android - 方向改变时相机出现问题

android - 在 android 库中包含 .json 文件,而不是在我的演示应用程序项目的/res/raw 或/assets 文件夹中

client-side - 使用 Ember.js 开发的大型网站

java - 如何打开、写入和保存文件,同时避免错误?

c - C 中的字符串处理实践

asp.net - Web 应用程序必须支持后退按钮吗?