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

标签 android service background whatsapp

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

现在,5 分钟后,我从另一台设备的 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/),而应用程序有一个注册的 Receiver 用于传入的推送通知并被此消息唤醒。 Android C2DM 是/曾经在 Android 2.2 中可用,这就是为什么在 Android 2.1 启动并运行的设备上看不到相同行为的原因。

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

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

关于android - 即使我强制停止应用程序,whatsapp 服务如何重新启动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11237064/

相关文章:

android - 带有水平 ScrollView 的图库

android - 迁移到 Android 11 后无法绑定(bind)到服务

css - @Html.DisplayFor - 根据显示中的数据更改背景颜色

java - 如何让我的按钮适合 Android 屏幕?

android - 拥有外部调用的 secret URL 的替代方案

java - 如何在android中根据特殊字符获取子字符串?

java - 如何通过另一个 Activity 杀死一个服务?

android - 远程服务和偏好 Activity

ios - swift 3+,URLsession,在后台明显随机失败

iphone - 如何在iOS中以特定时间间隔在后台执行函数