Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Android中存储状态_Java_Android_Android Asynctask - Fatal编程技术网

Java 在Android中存储状态

Java 在Android中存储状态,java,android,android-asynctask,Java,Android,Android Asynctask,我有一个列表视图,其中包含从internet下载的数据。 因此,在onCreate()方法中,我将运行异步任务下载信息并将其放入listview 我在saveInstanceState()方法中设置了一个布尔值,用于判断列表是否已下载,如果用户从home按钮退出应用程序并返回,则该值将起作用。但是,当用户通过后退按钮退出程序时,saveInstanceState()方法不会运行 我不想再次下载列表,如何检查它是否已下载?您可以覆盖Activity.onBackPressed()并将您的状态保存在

我有一个列表视图,其中包含从internet下载的数据。 因此,在onCreate()方法中,我将运行异步任务下载信息并将其放入listview

我在saveInstanceState()方法中设置了一个布尔值,用于判断列表是否已下载,如果用户从home按钮退出应用程序并返回,则该值将起作用。但是,当用户通过后退按钮退出程序时,saveInstanceState()方法不会运行


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

您可以覆盖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.
    }
}

如果要在应用程序的生命周期之外保存数据,则需要将其存储在捆绑包之外

你的目标是:

  • (在设备上)
  • (存储卡)
  • (这可能会使你的问题落空)

我建议使用专用内部存储文件来保存数据。

请查看:实施生命周期回调

使用回调来了解您的活动发生了什么,并在出现问题时做出反应

您可以使用共享首选项存储键值数据:

您确定重新启动应用程序时会加载捆绑包吗?我不确定会不会嗯,我不确定。我想你得试试。顺便说一句,我刚刚有了另一个想法,我将把它放在上面的答案中。