Cómo instalar tu aplicación en la memoria externa
En muchas ocasiones y dependiendo del dispositivo que tengamos y la memoria interna que este disponga, nos encontramos con el problema de tener la memoria llena. Como solución a este problema, se nos ocurre intentar mover nuestras aplicaciones a la tarjeta SD, pero… ¡Sorpresa! Tres cuartos de todas las aplicaciones instaladas no se pueden mover de la memoria interna a la externa.
¿Por qué ocurre esto? Bueno, cada desarrollador determina el lugar de instalación de la app, y permite o no moverla a la SD en función de los procesos con los que trabaja dicha app.
Contenido:
Cada desarrollador determina el lugar de instalación de la app, y permite o no moverla a la SD en función de los procesos con los que trabaja dicha app.
Para instalar tu aplicación en la memoria externa habrá que tener en cuenta ciertos factores, tal como qué tipo de procesos realiza tu app y qué importancia tiene tu app dentro del dispositivo en cuanto a funciones se refiere.
En el siguiente artículo veremos:
- 1.Qué tipo de apps no se deberían mover a la SD.
- 2.Cómo podemos determinar el lugar de instalación de nuestra app.
- 3.Permitir que esta se mueva a una memoria externa una vez instalada.
1.Qué tipo de apps no se deberían mover a la SD
¿Te imaginas que pasará si tienes una o varias aplicaciones instaladas en la tarjeta SD y un día decides quitarla para reemplazarla por otra de más tamaño? ‘Touché’ A tomar por saco las apps y todo lo relacionado con ellas.
Del mismo modo, cuando conectas tu smartphone al ordenador para transferir datos, los soportes externos como la SD se ‘desmontan’ y todo lo que hay dentro pasa a ser inaccesible por el sistema.
Teniendo en cuenta esto, vamos a ver las recomendaciones de Google a la hora de determinar si nuestra app debería instalarse únicamente en la memoria interna.
1. Aplicaciones con Widgets: Si en nuestra pantalla de inicio (Home) tenemos un widget instalado en la SD, al desmontar la memoria el widget desaparece, y no aparecerá en la lista de widgets disponibles hasta que se vuelva a introducir la memoria y se reinicie nuestro launcher (Home App).
2. Gestión de cuentas: Si en tu app haces uso de AccountManager, todas las cuentas creadas desaparecerán hasta que vuelvas a introducir la memoria externa.
3. Wallpapers Animados: Si tu app gestiona o añade fondos de pantalla animados, estos desaparecerán cuando se desmonte el soporte externo. Pero aún cuando se haya introducido de nuevo, tendrás que volver a seleccionar tu fondo e pantalla.
4. Servicios: Si tu app utiliza e inicia sus propios servicios, estos se detendrán al desmontar el soporte externo y no serán ‘re-iniciados’ al volver a introducirlo. Aunque como solución a este problema, podemos registrar un Intent que escuche el broadcast: ‘ACTION_EXTERNAL_APPLICATIONS_AVAILABLE’, para comprobar que las aplicaciones instaladas en la memoria externa están disponibles para el sistema de nuevo.
5. Alarmas: Si tu app gestiona alarmas utilizando AlarmManager, dichas alarmas se cancelarán y habrá que volver a registrarlas manualmente cuando el soporte externo se vuelva a montar.
6. IME (Input Method Engines): Si tu app añade métodos de entrada de texto personalizados. Sin el soporte externo estos no serán accesibles, por lo que volverás al teclado por defecto del sistema.
7. Sync Adapters: Si tu app utiliza objetos como «Abstract Threaded Sync Adapter». Estos pasarán a ser inoperativos hasta que se vuelva a montar la memoria externa.
8. Device Administrator: Si tu app utiliza el broadcast ‘DeviceAdminReceiver‘. Las opciones de administración del dispositivo y todo lo que depende de ello estarán desactivadas, y el problema puede persistir aún cuando la memoria externa se ha vuelto a introducir.
9. Broadcast BootCompleted: Si tu app va a registrar y realizar determinadas acciones al iniciar el dispositivo escuchando el evento «ACTION_BOOT_COMPLETED«. Una aplicación instalada en la memoria externa nunca podrá escuchar dicho evento, ya que el sistema lanza el broadcast antes de montar la memoria externa.
2.Determinar el lugar de instalación
Como hemos visto en los párrafos anteriores, no todas las aplicaciones son aptas para ser instaladas en soportes de memoria externos, aún así, si tu aplicación no está en conflicto con lo dicho anteriormente y apunta a nivel de API 8 o superior, puedes determinar en sencillas líneas de código el lugar de instalación. Por debajo de API 8, se ignora el lugar de instalación.
Por defecto, todas las apps se instalarán en la memoria interna del dispositivo.
Para cambiar el lugar de instalación bastará con añadir una línea en nuestro archivo Manifest. Concretamente el atributo «android:installLocation«. Para ello, dentro de la etiqueta ‘<manifest>’ añadiremos el atributo con valor «preferExternal«:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="preferExternal" ... >
El valor «preferExternal» solicitará al sistema que intente instalar dicha aplicación en el soporte externo. Sí, «solicitará». Solo hay una única condición por la cual tu app no pueda instalarse en la memoria externa.
¿Sabes cual puede ser? ¡Exacto! Memoria llena. Si se da el caso que tu tarjeta SD está a tope de capacidad, dicha app se instalará en la memoria interna. No le queda otra.
De todas maneras, en el momento que liberes espacio en la memoria externa, podrás mover manualmente tu app desde la memoria interna a la externa.
3.Permitir mover la app entre memoria interna y externa
Como hemos visto más arriba en el punto anterior, podemos definir un lugar de preferencia de instalación, pero también podemos utiliza el valor ‘auto‘ en vez de ‘preferExternal‘ en el atributo «android:installLocation» de nuestro manifest.
android:installLocation="auto"
El valor ‘auto’ le dice al sistema que puede instalarse tanto en la memoria interna y externa, por lo tanto puede moverse posteriormente a su instalación de un lugar a otro. Pero no aclara un lugar de preferencia, por lo tanto es el sistema quien se encargará de determinar el mejor lugar.
Principalmente se intentará instalar en la memoria interna, pero si esta está llena, se instalará en la externa.
Ahora ya deberías tener claro si te conviene que tu app se instale o pueda moverse a la memoria externa.
Aunque a día de hoy la gran mayoría de smartphones ya tienen suficiente capacidad para almacenar gran cantidad de apps en su memoria interna, siempre nos será útil poder mover ciertas apps al soporte externo para no tener problemas de espacio, como suele ocurrir en una variedad de dispositivos con muy poca capacidad de memoria interna.
Si te surge alguna duda coméntamela más abajo.
Relacionado: Google Dev