【发布时间】:2015-04-15 09:18:40
【问题描述】:
我有一个自定义Object 的ArrayList<>,当我的用户关闭我的应用程序时,我需要保存它。我可以在 logcat 中看到,当我使用 Bundle.putParcelableArrayList 时,它会将其“保存”到 outBundle,但是当我使用 Genymotion 或物理手机再次启动应用程序时,它不会恢复它。我也无法将final String 转换为Serializable,如果有帮助的话。
static final String tasks = "tasks";
outState.putParcelableArrayList(tasks, taskList); //this works
taskList = savedInstanceState.getParcelableArrayList(tasks); //this doesn't
我尝试在onCreate 中使用(savedInstanceState != null) 语句和onRestoreInstanceState 调用它。
我在这里遗漏了什么明显的东西吗?
编辑:这是我想在 logCat 中看到的:
outState.putParcelableArrayList(tasks, taskList);
System.out.println("saved: " + taskList);
这就是我得到的:
04-15 09:24:27.513 1791-1791/com.aau.uni.mea2015.a317b.cueless I/System.out﹕ saved: [this is a task
04-15 09:24:27.513 1791-1791/com.aau.uni.mea2015.a317b.cueless I/System.out﹕ 0 - 1 minutter, 1 underopgave(r)]
onRestore 或 onCreate 没有 logcat 输出,因为它从不“播放”它。 /编辑
【问题讨论】:
-
它崩溃了吗? logcat 的输出是什么?
-
进行编辑,我们无法读取 cmets 中的代码输出
-
@OliverGHjermitslev 请删除您的评论;当询问我的详细信息时,请始终更新您的问题。
-
“关闭”应用程序是什么意思?如果您从任务管理器中完全删除应用程序,保存的实例状态也将消失。您是否正确实施
Parcelable?你调试过,到底返回了什么? -
请详细说明,因为当您关闭您的应用程序时,您将不会取回您的实例状态。实例状态仅在操作系统暂时(由于内存限制等)停用您的应用后重新创建您的活动时恢复,而不是当您的应用在之前正确关闭后再次启动时恢复。
标签: java android arraylist savestate onrestoreinstancestate