android - telefono - porque mi celular dice memoria llena si no tengo nada
¿hay un tamaño máximo para el almacenamiento interno de Android asignado para una aplicación? (3)
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.
Actualización: realmente no me importa el almacenamiento externo ya que no siempre está disponible en el dispositivo y podría cambiarse (tarjeta SD) y podría verificar el almacenamiento interno con esto, pero esto no es lo que quiero saber, lo que quiero saber si hay un tamaño de memoria asignado para el almacenamiento interno del dispositivo?
Creo que hay un límite estricto de alrededor de 3.61GB.
Actualmente tengo termux instalado en mi pestaña. Termux ejecuta un terminal de Linux donde puedo instalar nodejs y npm. Por lo tanto, esencialmente creando un entorno de desarrollo. He instalado paquetes sin muchos problemas relacionados con el espacio, excepto cuando la memoria interna de mi dispositivo es realmente baja. Pero a partir de reciente. Creo que llegué a ese límite, lo que me llevó a esta pregunta y acertar en esta página.
El almacenamiento de mi dispositivo va más allá de 1GB y lo he usado con un espacio de tan solo 200 MB sin este problema. Pero mi instalación de termux ha crecido a 3.61GB. Recientemente comencé con hilo y parece que el hilo es un cerdo espacial. Estaba instalando un paquete y se registró de repente: error Could not write file "/data/data/com.termux/files/home/dev/ide/theia/yarn-error.log": "ENOSPC: no space left on device
Así que aplastó la instalación y pensé que realmente me había quedado sin espacio, pero no lo hice. La inspección posterior muestra que todavía tengo el espacio antes mencionado en almacenamiento interno y el hilo ha acumulado 750MB, de los cuales npm solo unos 500MB en caché. he estado usando npm desde entonces, pero solo necesitaba usar hilo ya que la instalación de Theia no estaba terminando bien con npm. Theia parece estar usando hilo como su administrador de paquetes. Por lo tanto, 3.61GB sugiere ser el límite más estricto para la aplicación + datos.
Al eliminar algunos paquetes y reducir el espacio utilizado por otros paquetes redundantes, gano espacio para crear archivos e instalarlos como me plazca, ¡pero tan pronto como alcance 3.61GB otra vez! ¡¡¡auge!!! eso es todo, no puedo crear más archivos.
No creo que esto esté bien documentado, pero está sucediendo.
Estoy usando lollipop (Android 5.1)
Para afirmar esto, alguien más debe intentar usar una aplicación que crea archivos realmente grandes en su entorno limitado interno. No en el almacenamiento interno, sino en su área de datos privada. Estoy seguro de que es probable que llegue a este límite.
Nunca he presenciado que limite una sola aplicación, y la he probado guardando algunos archivos de video bastante grandes (200 mb) en el directorio Archivos de la aplicación.
Para el almacenamiento interno, creo que solo está limitado por 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).
Por lo tanto, si está almacenando información que prefiere que el usuario no tenga la opción de editar manualmente, le conviene tener esto en cuenta.
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 SD tarjeta). 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 según la definición de compatibilidad para Android 2.3 (Sección 7.6.1), los dispositivos deben tener bastante 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 está planificado para convertirse en un mínimo estricto en una futura versión de Android. Se recomienda encarecidamente que las implementaciones de dispositivos cumplan con estos requisitos ahora, 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 sería inútil para las aplicaciones que necesitan almacenar más que el mínimo y sería un desperdicio para las aplicaciones que almacenan menos).
Editar : De la definición de compatibilidad para Android 4.0
Las implementaciones de dispositivos DEBEN tener al menos 350 MB de almacenamiento no volátil disponible para los datos del usuario. Es decir, la partición / data DEBE tener al menos 350 MB.
De la definición de compatibilidad para Android 4.3
Las implementaciones de dispositivos DEBEN tener al menos 512 MB de almacenamiento no volátil disponible para los datos del 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.