Estoy confundido acerca de cuándo usar la clase PersistableBundle en lugar de la clase Bundle. ¿Cuál es la ventaja de usarlo? ¿Alguien podría aclararlo?

11
koti 19 feb. 2018 a las 16:11

2 respuestas

La mejor respuesta

Es exactamente lo que dice que es.

Un mapeo de claves de cadena a valores de varios tipos. El conjunto de tipos admitidos por esta clase está deliberadamente restringido a objetos simples que se pueden conservar y restaurar de forma segura desde el disco.

Puede poner casi cualquier cosa en un paquete normal. Sin embargo, un PersistableBundle solo acepta ciertos tipos:

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[]);
}

Esta restricción existe para que sea persistente. Teniendo en cuenta que un paquete normal puede contener todo tipo de datos (personalizados), puede resultar complejo conservar esos datos en el disco. Para PersistableBundle, esto es más fácil, porque sabe que simplemente no puede contener datos tan complejos.

12
Tim 19 feb. 2018 a las 13:44

En pocas palabras, PersistableBundle es un tipo de paquete que es seguro para el disco. PersistableBundle y Bundle extienden la clase BaseBundle. La clase PersistableBundle se considera segura para el disco porque restringe los tipos de objetos a los realmente simples a diferencia de la clase Bundle. Es útil cuando se trabaja con Job Services y Job Schedulers. Puede consultar la documentación de Android aquí

1
Xpacer 15 feb. 2019 a las 07:16