android服务共享首选项

android服务共享首选项,android,android-service,sharedpreferences,android-lifecycle,Android,Android Service,Sharedpreferences,Android Lifecycle,我正在构建一个应用程序,其中包含一个在数据库中存储对象的服务。Its在内存中保留对象列表,直到有一定数量的对象,并将其保存到数据库中。这意味着当服务停止时,内存中的对象将丢失 为了解决这个问题,每当调用服务的onDestroy()方法时,我都会尝试保存应用程序共享首选项中的对象列表,并在onCreate()中重新启动时还原它们。我已经成功地从共享首选项恢复了列表,我遇到的问题是存储它 也就是说,当应用程序重新运行时,onCreate()在onDestory()之前大约半秒被调用。这意味着服务会在

我正在构建一个应用程序,其中包含一个在数据库中存储对象的服务。Its在内存中保留对象列表,直到有一定数量的对象,并将其保存到数据库中。这意味着当服务停止时,内存中的对象将丢失

为了解决这个问题,每当调用服务的
onDestroy()
方法时,我都会尝试保存应用程序共享首选项中的对象列表,并在
onCreate()中重新启动时还原它们。我已经成功地从共享首选项恢复了列表,我遇到的问题是存储它

也就是说,当应用程序重新运行时,
onCreate()
onDestory()
之前大约半秒被调用。这意味着服务会在存储列表之前尝试检索列表

我这样做对吗?或者,在服务停止和重新启动之间是否有其他方法来保存数据

感谢: “大多数Android应用程序都需要保存数据,即使只是为了在onPause()期间保存有关应用程序状态的信息,这样用户的进度就不会丢失。”

将存储逻辑移动到onPause()方法。

来自: “大多数Android应用程序都需要保存数据,即使只是为了在onPause()期间保存有关应用程序状态的信息,这样用户的进度就不会丢失。”


将存储逻辑移动到onPause()方法。

谢谢您的回答,但存储逻辑需要进入服务中,因为它可以在连接到它的活动暂停后长时间运行。据我所知,一个服务没有一个
onPause()
method。当敏感数据出现/改变时,你不想存储它吗?一个对象可能会影响它之前或之后的对象,所以我会在它们出现时保留一个列表。当它们不再影响其他对象时,将存储这些对象。问题是,如果服务在保存到数据库之前被销毁,我可能会丢失可能包含大量有用信息的对象,因为您无法在onDestroy()回调上进行中继,您可能希望定期保存敏感数据的“快照”。感谢您的想法,我想我将使用它。谢谢您的回答,但是存储逻辑需要进入服务中,因为它将能够在连接到它的活动暂停后长时间运行。据我所知,一个服务没有一个
onPause()
method。当敏感数据出现/改变时,你不想存储它吗?一个对象可能会影响它之前或之后的对象,所以我会在它们出现时保留一个列表。当它们不再影响其他对象时,将存储这些对象。问题是,如果服务在保存到数据库之前被销毁,我可能会丢失可能包含大量有用信息的对象,因为您无法通过onDestroy()回调进行中继。您可能希望定期保存敏感数据的“快照”。感谢您的想法,我想我会用它来代替为什么不简单地在onDestroy方法中将数据提交到db?为什么不简单地在onDestroy方法中将数据提交到db?