【问题标题】:ArrayList<Custom Object> saveInstanceState not returning listArrayList<Custom Object> saveInstanceState 不返回列表
【发布时间】:2015-04-15 09:18:40
【问题描述】:

我有一个自定义ObjectArrayList&lt;&gt;,当我的用户关闭我的应用程序时,我需要保存它。我可以在 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


【解决方案1】:

从我在此处阅读的内容 “...当我的用户关闭我的应用程序时我需要保存它。...但是当我再次启动应用程序时它不会恢复它,无论是使用 Genymotion 还是物理电话。” 听起来您正在手动关闭应用程序。

这样onRestoreInstanceState() 就不会被调用。仅当活动已被操作系统杀死时才调用它。

同时检查this postthis SO post

【讨论】:

    猜你喜欢
    • 2018-03-16
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    • 2015-06-21
    • 2021-01-28
    • 2016-01-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多