1

在我正在编写的 Android 库中,我有一个队列,其中的元素不断地入队和出队。一个必需的规范是队列中的任何元素都不会丢失。所以,如果应用程序关闭,我必须以某种方式保存队列。

我有两个选择:

1) 理想情况下,我可以在应用程序关闭时将队列保存到 SQLite 数据库中。但是,我不确定如何检测到这一点,或者即使有可能。通过这种方式,我可以在下次打开应用程序时将从未出队的队列元素重新加载回队列中。如果有人能告诉我如何从库(而不是活动)中检测应用程序关闭,那将非常有帮助。

2)如果那不可能,我可以将队列直接写入数据库以进行每次插入和删除。但是,这非常低效,对我的图书馆来说太慢了。

处理这个问题的最佳方法是什么?

4

3 回答 3

3

所以,如果应用程序关闭,我必须以某种方式保存队列。

将条目添加到队列时更新持久存储。例如,Square 的 Tape提供了一个持久队列实现。

但是,我不确定如何检测到这一点,或者即使有可能。

这不可能。Android 最接近“应用程序关闭”的情况是进程终止时,您不会提前收到通知。

但是,这非常低效,对我的图书馆来说太慢了。

它适用于 Square。他们的应用程序已被下载数百万次,在 Play 商店中的评分约为 4.5 星,并且使用了 Tape。

请注意,AFAIK Tape 不会写入 SQLite。

于 2013-06-11T19:00:01.943 回答
1

您无法检测 an 何时Application关闭,但是这项工作应该Service在您可以覆盖该onDestroy()方法的 a 中完成。

于 2013-06-11T19:00:03.013 回答
0

在 onPause 事件中,执行以下操作

if (isFinishing()) // This tells you the app is closing.

只有在这种情况下保存它。

于 2013-06-11T19:14:42.513 回答