在Android中存储状态

时间:2011-09-13 22:31:03

标签: java android android-asynctask

我有这个列表视图,其中填充了从互联网下载的数据。 因此在onCreate()方法中,我将运行异步任务来下载信息并将其放入listview。

我在saveInstanceState()方法中放置了一个布尔值,无论是否下载列表,如果用户从主页按钮退出应用程序并返回,这将起作用。但是,当用户通过后退按钮退出程序时,不会运行saveInstanceState()方法。

我不想再次下载列表,如何检查它是否已经下载?

3 个答案:

答案 0 :(得分:1)

检查一下:实施生命周期回调 http://developer.android.com/guide/topics/fundamentals/activities.html

使用回调来了解您的活动会发生什么,并在nesseceray时做出反应。

您可以使用共享偏好设置来存储键值数据: http://developer.android.com/guide/topics/data/data-storage.html

答案 1 :(得分:0)

您可以覆盖Activity.onBackPressed()并将状态保存在那里。

另外,你可以做到

void onPause() {
    if(isFinishing()) {
       // save your state. maybe you'd be better off with using preferences (or other things suggested by people here), so you don't need to worry about the instance state.
    }
}

答案 2 :(得分:0)

如果您希望将数据保留在应用程序的LifeCycle之外,则需要将其存储在Bundle之外。

您的options是:

我建议使用私人内部存储文件来保存您的数据。