Quiero saber cuándo hay una actualización disponible para una aplicación, obviamente, hay una nueva apk allí. Entonces, ¿es que la antigua apk se desinstala y se instala la nueva apk?
No del todo, no. Cuando desinstala un paquete, también elimina otros datos relacionados con ese paquete: por ejemplo, los datos privados de la aplicación, sus datos en la tarjeta SD, sus preferencias predeterminadas para esa aplicación. También le dice a cualquier otra aplicación interesada que ha eliminado la aplicación, a través de una transmisión intencional . Otras aplicaciones que reciben esa transmisión podrían tomar más medidas basadas en eso: por ejemplo, un iniciador (aplicación de pantalla de inicio) eliminaría los accesos directos de escritorio y los widgets de esa aplicación, ya que ya no funcionarán.
Cuando se actualiza un paquete (es decir, se reemplaza con un nuevo archivo APK con el mismo nombre de paquete y un código de versión posterior), la versión anterior se detiene, por lo que ya no se ejecuta nada de la aplicación. El antiguo archivo APK se elimina y el nuevo lo reemplaza, pero las otras acciones de desinstalación no se realizan: los datos privados de la aplicación y las preferencias predeterminadas se mantienen, y la transmisión de desinstalación no se envía. En cambio, se difunde una intención diferente para informar a las aplicaciones interesadas que el paquete se ha actualizado.
Entonces, mientras se elimina el archivo APK anterior, el efecto de una actualización es bastante diferente a desinstalar el paquete anterior y luego instalar el nuevo.
En Google Play, la situación puede ser un poco diferente si el desarrollador ha habilitado las actualizaciones delta (llamadas actualizaciones inteligentes de Google).
En una actualización delta, solo los cambios entre las dos versiones se descargan y se aplican al APK existente. Por ejemplo, si tiene una aplicación que tiene un tamaño de 15 MB y el desarrollador decide cambiar la imagen de fondo, no necesita volver a descargar la aplicación completa, solo puede descargar el delta (diferencia), que incluye el nuevo imagen. El APK anterior se duplica, el contenido nuevo se inyecta en la copia del APK anterior y, si tiene éxito, se elimina el APK anterior. El resultado final es el APK actualizado.