有人讨论过这个错误,但似乎他们最终都给出了关于“停止状态”(应用程序)的答案。
我看到了一些不同的东西。
我有两个云推送示例,一个是官方的GCM示例,另一个是遵循教程的FCM项目,它们都受到影响。
两者都安装在带有6.0.1的三星S6上,该设备插在电源上(不打瞌睡)并连接到无线网络。
向GCM样本或FCM应用程序发送推送消息时,有时会出现以下情况:
07-17 14:37:38.851 W/GCM-DMM(29459):广播意图回调:结果=取消forIntent{act=com.google.android.c2dm.intent.RECEIVE flg=0x10000000 pkg=GCM.play.android.samples.com.gcmquickstart(有额外功能)}
07-17 14:38:25.231W/GCM-DMM(29459):广播意图回调:结果=取消forIntent{act=com.google.android.c2dm.intent.接收flg=0x10000000 pkg=firebasetest.example.kman.firebasetest(有额外功能)}
启动任一应用程序的UI将使推送消息再次通过(该应用程序),但旧的推送消息(产生错误)将不会重新发送。
现在-我没有强制停止任何应用程序。其中一个我大概15分钟前用过。设备没有进入睡眠状态(它的屏幕是开着的,并且一直插着电源)。
所以“强制停止”的解释在这里不适用,打瞌睡模式在这里不适用。
此外,说到强制停止,我已经做了几个测试,运行然后故意从最近的应用列表中关闭(GCM或FCM)应用,验证进程被杀死(通过logcat),然后(GCM或FCM)推送消息会消失通过只是罚款。
因此,它必须是其他的东西(不是“强制停止”或打盹模式),而这是其他东西导致推送消息变得不可靠,这违背了目的。
有没有关于如何追踪这一点的想法,以防止/避免推送消息传递突然中断?
GCM样本清单:
https://github.com/googlesamples/google-services/blob/master/android/gcm/app/src/main/AndroidManifest.xml
FCM测试的清单:
"'xml
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service android:name=".MyFirebaseMessagingService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
<service android:name=".MyFirebaseInstanceIDService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
</intent-filter>
</service>
</application>
"'
我的结论是:
这是由Android Studio造成的。
当您完成一天的项目工作并退出AS时,它会询问是否应该终止应用(正在调试)。
无论您在这里选择什么,AS将始终终止应用程序并将其置于“停止”状态——不仅仅是GCM,警报也会停止触发。
我一直看到这种情况发生,并养成了自己重启应用程序并在那里做一些事情的习惯,这样它就不会说“停止”,也不会让我第二天感到惊讶(“发生了什么”)。
我以为我已经为这个提交了一个bug,但现在找不到了。如果有人感兴趣,请随时。。。
我有一个很奇怪的问题。 我正在发送广播并设置一些额外内容,但接收者没有收到: 发送: 并收到: 由于某些原因,downloadID为空。有什么提示吗? 谢谢
通知广播接收机: 谁能帮帮我吗?我不知道我做错了什么
我有麻烦当我启动应用程序和注册设备在Gcm 知道怎么修好它吗? 其余的工作良好,我收到的通知和正确的。 错误
问题内容: 我正在尝试开发一个可检测用户何时拍照的应用程序。我设置了广播接收器类,并通过以下方式将其注册到清单文件中: 无论我做什么,该程序都不会收到广播。这是我的接收器类: 如果删除清单和活动中的mimeType行,则使用以下命令发送自己的广播 然后我成功接收到广播,可以看到日志和吐司窗口。我是否采用正确的方法?有什么需要补充的吗? 问题答案: 我解决了这个问题,但是使用了另一种方法。我没有
问题内容: 有人可以解释和之间的确切区别吗? 在什么情况下我们必须使用每个Receiver类? 问题答案: 和之间只有一个区别。 当您收到内部广播方法时, 假设, BroadcastReceiver : 它 不保证 该 CPU将保持清醒 ,如果你启动一些长时间运行的进程。CPU可能会立即回到睡眠状态。 WakefulBroadcastReceiver : 这是 保证 该 CPU将保持清醒 ,直到你