2011-09-09 24 views
6

Una serie de preguntas separadas, pero relacionadas, sobre dónde almacenar el contenido descargado dentro de mi aplicación.Android: dónde almacenar contenido descargado, almacenamiento interno versus externo?

Tengo una aplicación que descarga contenido desde un servidor central. Este contenido a veces es contenido premium, o al menos contenido donde el editor no quiere que se distribuya libremente. Entiendo que el almacenamiento "externo" es de fácil acceso, mientras que el almacenamiento "interno" está protegido, a menos que el teléfono esté rooteado.

Si la aplicación está instalada en el SDCARD (como la mía está configurada), ¿el almacenamiento "interno" también está físicamente en el SDCARD? Por lo tanto, si mi aplicación instalada en SDCARD descarga, digamos, 100MB de contenido para almacenamiento interno, ¿termina en SDCARD o termina en el almacenamiento físico a bordo del dispositivo?

Si la aplicación está instalada en el SDCARD, y el almacenamiento "interno" con el contenido descargado está en el SDCARD, ¿está físicamente almacenado en un formato abierto o está encriptado? Me parece recordar haber leído que una aplicación almacenada en un SDCARD está encriptada. ¿Esto también se aplica al almacenamiento "interno"?

(pregunta eliminados por el almacenamiento de archivos en un solo directorio que Context.getDir() implica que un sistema de directorio puede crearse y mantenerse en el almacenamiento interno)

¿Hay un mejor enfoque?

Respuesta

4

hizo un montón de experimentación y llegaron a las siguientes conclusiones con Android 2.2 en un Motorola Droid 2:

  • Cuando se instala una aplicación/movido a la SDCARD continuación, se almacena como un archivo en .asec el directorio oculto /.android_secure en la SDCARD. Este es un archivo encriptado y comprimido.
  • Cuando la aplicación crea archivos de datos en el "almacenamiento interno" se almacenan dentro de la memoria interna del dispositivo, no en la SDCARD.
  • El cuadro de diálogo Configuración/Administrar aplicaciones para la aplicación tiene un valor para "Datos" - esta es la cantidad de datos que la aplicación está utilizando en su almacenamiento interno, es decir en la memoria interna no en el SDCARD
  • el almacenamiento externo termina en SDACRD en el directorio/Android/data
  • Al borrar los datos del cuadro de diálogo Configuración/Administrar detalles de aplicaciones se borra todo, lo que significa que la aplicación instalada necesita tener suficiente conocimiento/lógica para manejar el situación "sin datos".

Mi aplicación es una aplicación de contenido descargable. Lo que todo esto significa para mí es que:

  • Hay poco valor real en el almacenamiento de mi pequeña aplicación en la SDCARD dado que la mayor parte del almacenamiento se va a consumir en el teléfono estará en la memoria interna del dispositivo. Excepto por supuesto que siempre es bueno permitir que la aplicación se instale en el SDCARD.
  • El paquete de instalación debe poder recuperar el contenido descargado del usuario si lo borra el usuario.
  • El concepto de almacenar un unique installation id en la memoria interna funciona bien hasta que un usuario borre los datos de la aplicación y, por lo tanto, se compute una nueva ID de instalación.Por lo tanto, para poder recordar qué contenido se ha descargado en un dispositivo, se requiere una cuenta de usuario en un servidor central que el usuario crea/inicia sesión cada vez que la aplicación comienza desde cero.
Cuestiones relacionadas