Android中的Bundle vs PersistableBundle

时间:2018-02-19 13:11:02

标签: android

我很困惑何时使用PersistableBundle类而不是Bundle类。使用它有什么好处?任何人都可以澄清一下吗?

2 个答案:

答案 0 :(得分:7)

这正是它所说的。

  

从String键到各种类型的值的映射。此类支持的类型集有意限制为可以安全地保存到磁盘并从磁盘还原的简单对象。

您可以将任何内容放入常规捆绑包中。但是PersistableBundle只接受某些类型:

public static boolean isValidType(Object value) {
    return (value instanceof Integer) || (value instanceof Long) ||
            (value instanceof Double) || (value instanceof String) ||
            (value instanceof int[]) || (value instanceof long[]) ||
            (value instanceof double[]) || (value instanceof String[]) ||
            (value instanceof PersistableBundle) || (value == null) ||
            (value instanceof Boolean) || (value instanceof boolean[]);
}

这个限制是,以使其可持久。考虑到常规Bundle可以包含各种(自定义)数据,将数据持久保存到磁盘可能很复杂。对于PersistableBundle,这更容易,因为您知道它根本不能包含这样复杂的数据。

答案 1 :(得分:0)

简单地说,PersistableBundle是一种磁盘安全的捆绑软件。 PersistableBundle和Bundle都扩展了BaseBundle类。 PersistableBundle类被认为是磁盘安全的,因为与Bundle类不同,它将对象类型限制为真正简单的对象类型。与Job Services和Job Scheduler一起使用时非常有用。 You can check the android documentation here