如何在应用程序停止时从GCM接收通知

Gre*_*reg 10 android push-notification google-cloud-messaging

如果应用程序未运行,GCMIntentService(extends GCMBaseIntentService)不会收到通知.

来自:http://developer.android.com/about/versions/android-3.1.html

启动已停止应用程序的控件请注意,系统会将FL​​AG_EXCLUDE_STOPPED_PACKAGES添加到所有广播意图.这样做是为了防止来自后台服务的广播无意或不必要地启动已停止的应用程序的组件.后台服务或应用程序可以通过将FLAG_INCLUDE_STOPPED_PACKAGES标志添加到应允许激活已停止的应用程序的广播意图来覆盖此行为.

有办法解决这个问题吗?谢谢

Com*_*are 22

如果应用程序未运行,GCMIntentService(extends GCMBaseIntentService)不会收到通知.

是的,它会的.但是,你的问题的其余部分与应用程序是否正在运行几乎没有关系,而是之前是否由用户运行."停止"这个词在你引用的段落中的意思不是"不运行",而是表示应用程序所处的状态:

  • 首次安装时,在手动调用组件之前(例如,用户启动活动)

  • 在用户强制停止应用程序之后,直到手动调用组件(例如,用户启动活动)

(而且我真的希望他们能够提出一个更加独特的形容词而不是"停止"这个......)

有办法解决这个问题吗?

不会.如果用户强制停止您的应用,他们会表示他们不希望您的应用因任何原因再次运行,直到他们再次手动启动它为止.您的目标是让用户没有理由强制停止您的应用.请注意,我的意思是"强制停止"(即,从"设置"中按"强制停止"按钮) - 普通任务管理器,或从Android 4.x中的"近期任务"列表中滑动,没有此效果.

  • 根据我的经验,如果用户滑动从Recent Tasks中删除应用程序,那么这也会阻止服务接收消息.对我来说,只有当我的应用程序背景或从应用程序本身手动关闭时,我才会收到GCM消息. (5认同)