Saving Android application data on app exit

不问归期 提交于 2019-12-23 15:16:11

问题


It seems that there is a large amount of information about saving Activity state, but I have been unable to locate much on finding Application state.

I am looking for some design ideas to solve a problem I have run into. I am developing a game that has a fairly large data model (1-2 MBytes). This model exists outside of any Activity, in fact there are numerous activities that all interact with it. These activities are transient, coming and going all the time.

I currently keep a pointer to the data model in my application and all of the activities access the data model through it. I need to save that data model in the event that my application is being killed, but it is far too slow to save it every time an activity hits onPause, which happens very frequently as activities come and go.

What I need is a way to determine that my application (and along with it my data model) are being destroyed. I have searched extensively for this method or callback and have come up empty.

I would appreciate any suggestions.


回答1:


I have been unable to locate much on finding Application state.

That's because there is no "Application state" in Android, any more than there is in a Web app.

but it is far too slow to save it every time an activity hits onPause

While your entire data model may be "1-2 MBytes", but the amount of data that changes is going to be a small subset of that, for any given change. Use a background thread and only modify the data that has changed.

which happens very frequently as activities come and go

It sounds like perhaps you have too many activities.

What I need is a way to determine that my application (and along with it my data model) are being destroyed

That is not possible. You will never find out that you are being destroyed. Android can and will terminate your process without warning, either at user request (e.g., Force Close, task killer) or for OS reasons (e.g., need the RAM to handle an incoming phone call).

You are welcome to use onUserLeaveHint(), which is called in a number of cases when you entire app loses the foreground, but I certainly would not count on that for something as important as persisting a data model.



来源:https://stackoverflow.com/questions/12121783/saving-android-application-data-on-app-exit

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!