我对何时使用PersistableBundle类而不是Bundle类感到困惑。使用它有什么优势?能否有人澄清一下?
我对何时使用PersistableBundle类而不是Bundle类感到困惑。使用它有什么优势?能否有人澄清一下?
它就是它所说的。
这是一个将字符串键映射到各种类型值的集合。此类支持的类型集被有意地限制为可以安全地持久化到磁盘并从磁盘恢复的简单对象。
您可以在常规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[]);
}
这个限制是为了使它持久化。考虑到常规 Bundle 可以包含各种(自定义)数据,将该数据持久化到磁盘可能会很复杂。对于 PersistableBundle 来说,这更容易,因为您知道它根本不可能包含如此复杂的数据。
简单来说,PersistableBundle是一种磁盘安全的bundle类型。PersistableBundle和Bundle都继承自BaseBundle类。PersistableBundle类被认为是磁盘安全的,因为它限制了对象类型,只使用非常简单的类型,而不像Bundle类那样复杂。在处理作业服务和作业调度器时很有用。 您可以在此处查看Android文档