2012-06-28 20 views
21

Estoy ejecutando whatsapp (podríamos llamarlo appX a partir de ahora) en el dispositivo A. Voy a administrar aplicaciones -> forzar cerrar para que appX se cierre y ya no vea appX como servicios en ejecución.¿Cómo se reinicia el servicio de WhatsApp incluso si fuerzo la detención de la aplicación?

Ahora, después de 5 minutos, envío un mensaje desde el dispositivo X de otro dispositivo (dispositivo B) al dispositivo A appX (el que lo maté). Éstos son los 2 escenarios: Probé

  • Un dispositivo con Android 2.1: nunca recibe el mensaje, por lo tanto, podríamos decir que ninguno de los servicios Appx consiguió reinicia. SÓLO recibe el mensaje si el usuario reinicia manualmente la aplicación.

  • dispositivo A con Android 2.3.6: por alguna razón mágica, no importa cuánto tiempo haya pasado desde la muerte de appX, tan pronto como enviamos el mensaje desde el dispositivo B -> el dispositivo A recibe el mensaje, por lo tanto, appX el servicio se reinicia. Nota: todo el tiempo que el appX se cerró y SIN recibir ninguna notificación, no pude ver ningún servicio en ejecución de appX en las aplicaciones de administración, por lo que este servicio mágico se reinicia tan pronto como reciba un mensaje/notificación

Sé que suena raro, y mucha gente dirá que esto es imposible, pero una vez más, esto ha sido probado en estos 2 dispositivos.

Estoy tratando de lograr este mismo comportamiento, por lo que cualquier ayuda será apreciada.

+0

Lo probé en Android 4.4.4. Dejé WhatsApp form apps-> forzar parada. Después de esto, no recibí ningún mensaje automáticamente. Tuve que iniciar manualmente WhatsApp para recibir mensajes. ¿Esto solo ocurre en 2.3.6? – RocketRandom

Respuesta

45

Antes de arriba/abajo-voto esta respuesta por favor tome en cuenta que la respuesta es casi 3 años ahora (hablando en mayo de 2015) y las cosas pueden han cambiado!

¡No creo que sea algo mágico lo que sucede aquí! Es solo Android C2DM (vea: https://developers.google.com/android/c2dm/), mientras que la aplicación tiene un Receiver registrado para notificaciones entrantes y se despierta con este mensaje. Android C2DM está/estaba disponible con Android 2.2, esa es la razón por la que no puedes ver el mismo comportamiento en tu dispositivo con Android 2.1 en funcionamiento.

Por cierto: Como se puede ver, C2DM está en desuso desde el 26 de junio de 2012. Así que en lugar de C2DM, uno debe utilizar GCM (ver: http://developer.android.com/guide/google/gcm/gs.html)

comentario útil: GCM necesita conexión a internet. Puede usar cualquier otro receptor de difusión como SMSReceiver para pasar esta limitación.

+1

¡La mejor respuesta de todas! Gracias por la respuesta precisa herom! – cesarmax

+4

De nada. Si esta respuesta fue útil para usted, considere marcarla como la respuesta correcta (haciendo clic en el cheque), para que esta pregunta se marque como cerrada;) – herom

+1

Bueno, he implementado GCM pero cuando cerré el servicio no lo hago No recibo notificaciones automáticas, así que no creo que GCM esté ayudando incluso si cerramos el servicio y aún recibimos el mensaje – Hunt

12

A partir de Android 3.1 (API 12), si una aplicación es la fuerza-detenido no se reiniciará hasta que el usuario ejecuta manualmente la aplicación de nuevo.

Esto sucederá incluso si la aplicación contiene un Service o un BroadcastReceiver activo.

Puede encontrar la documentación oficial here.

+1

Una de las mejores soluciones para estar de acuerdo. –

+0

Esta [solución] (http://stackoverflow.com/questions/17768932/service-crashing-and-restarting#18199749) me alegró el día. –

3

no tengo idea sobre el servicio de whatsApp.

Pero es posible que después de la aplicación de parada forzada, reinicie el servicio de la aplicación.

uso START_STICKY servicio para mi chatApp. Tengo que hacer lo mismo, así que uso el servicio START_STICKY, así que cuando mi aplicación mata o fuerza a dejar de configurar, después de unos segundos mi servicio se reinicia y puedo iniciar sesión en mi servidor xmpp y recibir el mensaje entrante.

+1

START_STICKY no reiniciar el servicio en la versión de Lollipop ... todo está trabajado –

1

no es nada mágico aquí appX usa notificaciones push a través de la plataforma GCM de Android https://developer.android.com/google/gcm/index.html en GCM la aplicación se registra para un receptor de braodcast y el receptor de difusión inicia el servicio al recibir la notificación de inserción. Android GCM depende de los servicios de google play que están disponibles en Android 2.2 y más allá de eso, por lo tanto, usted no vio el mensaje en el dispositivo 2.1

Cuestiones relacionadas