Activity.saveInstanceState和Guava ImmutableList序列化

时间:2013-03-01 02:44:47

标签: java android guava

我的活动有一个成员变量private List<MyType> test,初始化为ImmutableList.of()。此变量的唯一其他分配是ImmutableList.copyOf(),它将SingletonImmutableList复制为MyType的单个元素。

这是在我的android活动上运行,我想保留此列表的值。

@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    if (!test.isEmpty())
    {
        outState.putSerializable(SAVE_TEST_KEY, (Serializable) test);
    }
}

我已将调试器连接到putSerializable(...),我可以看到测试确实是SingletonImmutableList

@Override
protected void onCreate(Bundle savedInstanceState) {
   ...

    if (savedInstanceState != null)
    {
        if (savedInstanceState.containsKey(SAVE_TEST_KEY))
        {
            Object tTest = savedInstanceState.get(SAVE_TEST_KEY);
        }
    }

  ...
  }

savedInstanceState.get(...)行上,我可以看到get的结果是ArrayList。尝试将其强制转换为ImmutableList会导致ClassCastException。

有人可以解释为什么类型会从序列化变为反序列化吗?

0 个答案:

没有答案