Así que, Android tiene esta vista (creo que a la izquierda del botón de inicio es estándar) donde se ven todas las aplicaciones "actualmente abiertas", lo que sea que eso signifique exactamente. Lo que me pregunto es cómo pueden recibir notificaciones las aplicaciones que no están entre las que se están "ejecutando" actualmente. Por ejemplo, Whatsapp, Reddit o el correo electrónico siguen enviando alertas incluso en un smartphone recién reiniciado en el que definitivamente no he iniciado la aplicación manualmente.
¿Cómo funciona exactamente? ¿Están, en cierto sentido, todas las aplicaciones instaladas funcionando en segundo plano todo el tiempo, y en intervalos regulares preguntando a su servidor de origen si ha habido una notificación? ¿La notificación se envía de alguna manera al propio sistema Android, que a su vez activa la aplicación solicitada a petición? Al menos en un PC yo esperaría que un programa tenga que estar ejecutándose para poder enviar las alertas, pero tal vez Android sea completamente diferente.
4 votos
La pregunta es ligeramente diferente pero la respuesta es la misma: ¿Cómo se muestran las nuevas notificaciones de ciertas aplicaciones cuando el acceso a Internet está restringido para ellas?
2 votos
Cuando se instala una aplicación, posiblemente se instala algo más que la "aplicación" que se ve en la pantalla. Estas aplicaciones también pueden instalar servicios que se ejecutan en segundo plano, independientemente de que los veas en las "aplicaciones anteriores". Ten en cuenta también que esas "aplicaciones anteriores" no se están ejecutando realmente cuando las estás viendo en esa vista - están suspendidas, y sólo vuelven a la vida una vez que las traes al primer plano.
1 votos
Por ejemplo, una aplicación como Life 360 no tiene que abrirse nunca cuando se inicia el teléfono, pero de vez en cuando comprueba tu ubicación y la comunica al servidor en Internet. La aplicación Life360 en sí no se ejecuta, pero el servicio que instaló sí.
1 votos
@Steve lo que dices es que aunque una aplicación no esté ejecutando una Actividad (la parte visible de una aplicación), puede tener un servicio en segundo plano que esté recibiendo y mostrando las notificaciones. Pues eso no es correcto. Desde Android 8 las aplicaciones no pueden ejecutar servicios en segundo plano. Necesitan ejecutar un servicio en primer plano (con notificación persistente; ver el ejemplo de Telegrama ) o tienen que confiar en el sistema operativo para despertarlos cuando sea necesario (por ejemplo, utilizando BroadcastReceiver, Alarm, WorkManager, JobScheduler, etc.).
3 votos
Pero en un dispositivo compatible con Google, los servicios de Google Play siempre ejecutan un servicio en segundo plano (
com.google.android.gms.gcm.GcmService
) que mantiene una conexión de red con el servidor de Firebase para recibir mensajes push y entregarlos a las aplicaciones de destino. Dado que Play Services es una aplicación privilegiada del sistema, no está sujeta a las restricciones de los servicios en segundo plano. Además deGcmService
El GMS también ejecuta una serie de otros servicios de fondo (normalmente más de 20). Puede encontrar un proceso llamadocom.google.android.gms.persistent
siempre en funcionamiento en cualquier dispositivo compatible con GMS.1 votos
@IrfanLatif Estoy trabajando en algunos conocimientos de hace años ... gracias por corregir.