即使我强制停止应用程序,whatsapp服务如何重新启动?

时间:2012-06-28 01:43:36

标签: android service background whatsapp

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

现在,5分钟后,我从其他设备的appX(设备B)向设备A appX(我们杀死它的那个)发送消息。   以下是我测试的2个场景:

  • 设备A与Android 2.1:它永远不会收到消息,因此我们可以说没有任何appX服务重新启动。只有手动用户重新启动应用程序时,它才会收到消息。

  • 带有android 2.3.6的设备A:出于一些神奇的原因,无论我们从设备B发送消息后,自appX被杀以来已经有多长时间了 - &gt;设备A获取消息,因此,appX的服务重新启动。注意:在关闭appX并且没有收到任何通知的情况下,我无法在管理应用程序中看到appX的任何正在运行的服务,因此这意味着一旦收到消息/通知,该魔术服务就会重新启动< / p>

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

我正在尝试完成同样的行为,所以任何帮助都会受到赞赏。

4 个答案:

答案 0 :(得分:47)

  

在你上/下投票之前,请考虑到这个答案   答案现在已经快3岁了(说到2015年5月),事情可能会发生   已经改变了!

我认为这里发生的事情并不神奇!它只是Android C2DM(请参阅:https://developers.google.com/android/c2dm/),而应用程序已注册Receiver传入推送通知,并被此消息唤醒。 Android C2已经安装了Android C2,这就是为什么在Android 2.1启动并运行的情况下,您无法在设备上看到相同的行为。

顺便提一下:正如您所看到的,C2DM自2012年6月26日起被弃用。因此,应该使用GCM而不是C2DM(参见:http://developer.android.com/guide/google/gcm/gs.html

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

答案 1 :(得分:12)

Android 3.1 (API 12)开始,如果应用程序被强制停止,则在用户再次手动运行应用程序之前不会重新启动

即使应用包含Service或有效BroadcastReceiver,也会发生这种情况。

您可以找到官方文档here

答案 2 :(得分:2)

我对whatsApp服务一无所知。

但是有可能在强制停止应用后重启app的服务。

我为chatApp使用START_STICKY服务。我必须做同样的事情,所以我使用START_STICKY服务,所以当我的应用程序杀死或强制停止设置,几秒后我的服务重新启动,我能够登录到我的xmpp服务器并获得传入消息。

答案 3 :(得分:1)

这里没什么神奇的appX在GCM中通过Android GCM平台https://developer.android.com/google/gcm/index.html使用推送通知,app注册了一个braodcast接收器,广播接收器在获取推送通知时启动服务。 Android GCM依赖于Android 2.2及更高版本上提供的Google Play服务,因此您在2.1设备上看不到该消息