在我正在编写的Android库中,我有一个队列,其中的元素不断排队并出列。必需的规范是队列中没有元素丢失。因此,如果应用程序关闭,我必须以某种方式保存队列。
我有两个选择:
1)理想情况下,我可以在应用程序关闭时将队列保存到SQLite数据库中。但是,我不确定如何检测到这一点,或者即使它是可能的。通过这种方式,我可以在下次应用程序打开时重新加载从未出列的队列元素。如果有人可以告诉我如何从库(而不是活动)中检测到应用程序,那将非常有帮助。
2)如果那是不可能的,我可以将队列直接写入数据库以进行每次插入和删除。但是,这非常低效,对我的图书馆来说太慢了。
处理此问题的最佳方法是什么?
答案 0 :(得分:3)
因此,如果应用程序关闭,我必须以某种方式保存队列。
将条目添加到队列时更新持久性存储。例如,Square's Tape提供持久性队列实现。
但是,我不确定如何检测到这一点,或者即使它是可能的。
这是不可能的。 Android对“应用程序关闭”的最接近的事情是该进程终止时,并且您不会提前通知您。
然而,这非常低效,对我的图书馆来说太慢了。
适用于Square。 Their app已被下载数百万次,并且在Play商店中获得了约4.5星评级,并使用了磁带。
请注意,AFAIK磁带不会写入SQLite。
答案 1 :(得分:1)
您无法检测Application
何时关闭,但此工作应在Service
中完成,您可以在其中覆盖onDestroy()
方法。
答案 2 :(得分:0)
在onPause事件中,执行以下操作
if (isFinishing()) // This tells you the app is closing.
仅在这种情况下保存。