En mi aplicación de Android, cargo un archivo y una carpeta que contiene un montón de archivos. Estoy tratando de determinar si estos deben agregarse como activos, como recursos o algo completamente diferente.

El archivo es un archivo XML cuya ruta se pasa a un constructor de clase que crea un objeto a partir de lo que contiene el archivo. Tengo acceso al código del constructor si es necesario.

La carpeta contiene un montón de archivos no legibles por humanos formateados especialmente. La ruta a la carpeta se pasa a otro constructor que conoce la estructura de la carpeta y crea un objeto. No tengo acceso a su código.

Ah, y estos dos no tienen nada que ver entre sí, aparte del hecho de que son necesarios para la misma aplicación.

Entonces, ¿cómo debo almacenarlos? Primero pensé en agregarlos como activos, pero aparentemente solo puedo obtener un flujo de entrada para un activo que no funcionaría. Si agrego la carpeta como recurso, ¿tiene que ir a una subcarpeta específica en res /? ¿Cuál? ¿El archivo XML debe colocarse en res / xml? Ya sea un activo o un recurso, ¿existe una ruta raíz predeterminada que deba usar para acceder al archivo y la carpeta?

¡Thx!

1
I Z 23 abr. 2012 a las 22:42
¿Es necesario que estos archivos cambien con el tiempo o está bien si se envían con su código fuente y nunca se modifican?
 – 
wsanville
23 abr. 2012 a las 22:48
Diría que los archivos de la carpeta son bastante estáticos. Es decir, pueden actualizarse, pero probablemente con la misma frecuencia que el código en sí (corrección de errores, etc.). El archivo XML no es estático. Contiene una lista de tipos y el usuario tiene la opción de agregar más elementos a la lista usando la aplicación.
 – 
I Z
23 abr. 2012 a las 23:01
Los activos y recursos no pueden cambiar en tiempo de ejecución, así que téngalo en cuenta.
 – 
wsanville
23 abr. 2012 a las 23:39
Gracias, tenlo en cuenta
 – 
I Z
24 abr. 2012 a las 18:51

1 respuesta

La mejor respuesta

Pondría el archivo XML en res/xml/, simplemente por razones de rendimiento. res/xml/ admite XML arbitrario y todos los recursos codificados en XML se analizan unas 10 veces más rápido que analizar archivos normales. Su "constructor de clase que crea un objeto a partir de lo que está contenido en el archivo" usaría el XmlResourceParser que obtiene del objeto Resources para ese XML.

En cuanto a la carpeta, utilice assets/, ya que no puede tener una estructura de carpetas en los recursos (sin formato o de otro tipo).

Primero pensé en agregarlos como activos, pero aparentemente solo puedo obtener un flujo de entrada para un activo que no funcionaría.

Realmente no tiene otra opción si desea empaquetar los archivos con su aplicación y usarlos directamente. Ni los recursos ni los activos están disponibles directamente como archivos. La única forma de obtener su contenido como archivos es que los copie, mediante secuencias, a archivos locales usted mismo, lo que aumenta la cantidad de almacenamiento que ocupan y, en el caso del XML, reduce el rendimiento del análisis.

2
CommonsWare 23 abr. 2012 a las 22:53