2012-02-08 25 views
27

Quiero guardar un archivo json con todos los datos de la aplicación (algo similar a la preferencia) pero no estoy seguro de cuál es el tamaño límite, porque si la aplicación no puede usar este archivo, probablemente no funcionará. Esta información se conoce de antemano y el sistema operativo reserva un espacio para su aplicación o se basa en el tamaño disponible.¿hay un tamaño máximo de almacenamiento interno de Android asignado para una aplicación?

Actualización: yo no me importa de almacenamiento externo, ya que no siempre está disponible en el dispositivo y podría ser cambiado (tarjeta SD) y yo podría comprobar si hay internal storage using this pero esto no es lo que quiero saber es, lo que quiero saber si hay un tamaño de memoria asignado para el almacenamiento interno del dispositivo?

+4

Si tiene un archivo * JSON * que le preocupa que sea demasiado grande, lo está haciendo mal. – CommonsWare

+2

im no me preocupa que el archivo sea _demasiado_, me preocupa que el almacenamiento interno que dejó para la aplicación sea _muy pequeño_ – Jimmy

Respuesta

35

Si usa Environment.getExternalStorageDirectory() (o Context.getExternalFilesDir() para nivel de API 8 y superior) como el lugar para su archivo json, entonces creo que el tamaño estará limitado por el espacio disponible en el almacenamiento externo (generalmente una tarjeta SD). Para la mayoría de los dispositivos, creo que no existen límites fijos integrados en Android para el almacenamiento externo de archivos. (El almacenamiento interno es una cuestión diferente. Los fabricantes de dispositivos pueden imponer límites bastante restrictivos, tal vez tan bajos como 100MB compartidos entre todas las aplicaciones.)

ACTUALIZACIÓN: Tenga en cuenta que de acuerdo con compatibility definition for Android 2.3 (Sección 7.6.1), los dispositivos deben tener bastante un poco de memoria:

Las implementaciones de dispositivos DEBEN tener al menos 150MB de almacenamiento no volátil disponible para los datos del usuario. Es decir, la partición/data DEBE tener al menos 150 MB.

Más allá de los requisitos anteriores, las implementaciones de dispositivos DEBERÍAN tener al menos 1GB de almacenamiento no volátil disponible para los datos del usuario. Tenga en cuenta que este requisito más alto de está planificado para convertirse en un mínimo estricto en una versión futura de Android. Se recomienda enfáticamente que las implementaciones de dispositivos cumplan con estos requisitos o, de lo contrario, pueden no ser elegibles para compatibilidad con una versión futura de Android.

Este espacio es compartido por todas las aplicaciones, por lo que puede llenarse. No hay un almacenamiento mínimo garantizado disponible para cada aplicación. (Tal mínimo garantizado tendría valor alguno para las aplicaciones que necesitan almacenar más del mínimo y sería una pérdida para las aplicaciones que almacenan menos.)

Editar: De los compatibility definition for Android 4.0

implementaciones dispositivo debe tener al menos 350MB de almacenamiento no volátil disponible para los datos del usuario. Es decir, la partición/data DEBE tener al menos 350 MB.

De las implementaciones de dispositivo compatibility definition for Android 4.3

debe tener al menos 512 MB de almacenamiento no volátil disponible para datos de usuario. Es decir, la partición/data DEBE tener al menos 512 MB.

Curiosamente, la recomendación de que las implementaciones DEBERÍAN proporcionar al menos 1 GB no ha cambiado.

+0

Pregunta actualizada. – Jimmy

+0

@Jimmy - ¿Qué tamaño de archivo estamos hablando aquí? –

+0

el archivo no es grande, digamos un par de KB, pero la cosa es que si el SO no reserva nada para mi aplicación, en algunos casos, incluso los archivos pequeños serán un problema. – Jimmy

13

Nunca he visto que limite una sola aplicación, y lo he probado guardando algunos archivos de video bastante grandes (200 mb) en el directorio de Archivos de la aplicación.

Para el almacenamiento interno creo que su único límite es la cantidad de almacenamiento interno disponible para todas las aplicaciones para compartir. Lo que como @Ted Hopp mencionó es bastante pequeño en algunos de los dispositivos más antiguos y de menor nivel. Pero en los dispositivos más nuevos y de mayor categoría han comenzado a alcanzar una cantidad razonable, aunque incluso si el dispositivo tiene mucho espacio, otras aplicaciones lo pueden utilizar (por lo que debe probar lo que sucederá en este escenario).

También vale la pena señalar que si utiliza un almacenamiento externo como la tarjeta SD, entonces su archivo json sería técnicamente editable por el usuario. Podrían abrirlo en un editor de texto y comenzar a cambiar los valores en bruto si quisieran. (Esto también es posible si elige usar almacenamiento interno, pero requeriría un dispositivo rooteado, mientras que si está almacenado en la tarjeta SD no necesitaría root)

Si almacena información que prefiera el usuario no tiene la opción de editar manualmente, es posible que desee tener eso en cuenta.

Cuestiones relacionadas