我正在设备A中运行whatsapp(从现在开始我们可以称其为appX)。我去管理应用程序->强制关闭,因此appX被关闭,我不再将appX视为正在运行的服务。

现在,五分钟后,我从另一台设备的appX(设备B)向设备A appX(我们杀死了它的那个)发送了一条消息。
这是我测试的2种情况:

带有Android 2.1的

  • 设备A:它从不接收消息,因此我们可以说没有重启任何appX服务。仅当用户手动重新启动应用程序时,它才会收到消息。
  • 带有Android 2.3.6的
  • 设备A:出于某种神奇的原因,无论从appX被杀死以来已经存在多长时间,只要我们从设备B发送消息->设备A就会收到消息,因此appX的服务将重新启动。注意:在关闭appX且没有收到任何通知的情况下,我始终无法在管理应用程序中看到appX的任何正在运行的服务,因此这意味着该魔术服务在收到消息/通知
  • 后立即重新启动

    我知道这听起来很奇怪,很多人会说这是不可能的,但是同样,这已经在这两种设备上进行了测试。

    我正在尝试实现相同的行为,因此将不胜感激。

    最佳答案



    我认为这里发生的事情并不神奇!它只是Android C2DM(请参阅:https://developers.google.com/android/c2dm/),而该应用程序已为传入的Push Notifications注册了Receiver并被此消息唤醒。
    Android 2.2附带了Android C2DM,这就是为什么在启动并运行Android 2.1的设备上看不到相同行为的原因。

    顺便说一句:如您所见,C2DM自2012年6月26日起弃用。因此,应使用GCM代替C2DM(请参阅:http://developer.android.com/guide/google/gcm/gs.html)

    有用的注释:GCM需要可用的互联网连接。您可以通过传递此限制来使用任何其他广播接收器,例如SMSReceiver。

    08-03 14:15