Java 在Android中存储状态
我有一个列表视图,其中包含从internet下载的数据。 因此,在onCreate()方法中,我将运行异步任务下载信息并将其放入listview 我在saveInstanceState()方法中设置了一个布尔值,用于判断列表是否已下载,如果用户从home按钮退出应用程序并返回,则该值将起作用。但是,当用户通过后退按钮退出程序时,saveInstanceState()方法不会运行Java 在Android中存储状态,java,android,android-asynctask,Java,Android,Android Asynctask,我有一个列表视图,其中包含从internet下载的数据。 因此,在onCreate()方法中,我将运行异步任务下载信息并将其放入listview 我在saveInstanceState()方法中设置了一个布尔值,用于判断列表是否已下载,如果用户从home按钮退出应用程序并返回,则该值将起作用。但是,当用户通过后退按钮退出程序时,saveInstanceState()方法不会运行 我不想再次下载列表,如何检查它是否已下载?您可以覆盖Activity.onBackPressed()并将您的状态保存在
我不想再次下载列表,如何检查它是否已下载?您可以覆盖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.
}
}
如果要在应用程序的生命周期之外保存数据,则需要将其存储在捆绑包之外 你的目标是:
- (在设备上)
- (存储卡)
- (这可能会使你的问题落空)
我建议使用专用内部存储文件来保存数据。请查看:实施生命周期回调 使用回调来了解您的活动发生了什么,并在出现问题时做出反应 您可以使用共享首选项存储键值数据:
您确定重新启动应用程序时会加载捆绑包吗?我不确定会不会嗯,我不确定。我想你得试试。顺便说一句,我刚刚有了另一个想法,我将把它放在上面的答案中。