Android中的Bundle vs PersistableBundle

kot*_*oti 9 android

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

Tim*_*Tim 10

它正是它所说的.

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

你可以在常规的Bundle中放入任何东西.但是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[]);
}
Run Code Online (Sandbox Code Playgroud)

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