2

我正在使用 GCMIntentService 接收 GCM 消息。这一切都按预期工作,但我允许用户“退出”或停止应用程序,之后不应将新消息传递到设备。

问题是,如何阻止 GCMIntentService 运行?因为在我关闭所有内容并在我的 Activity 上调用“完成”之后,GCMIntentService 仍然收到导致 NullRef 的消息。

当然,我可以做一个 if 语句来避免 nullRef,但我想完全停止 GCMIntentService,使其不再运行。

我怎样才能做到这一点?

4

2 回答 2

0

忽略您从 GCM 收到的消息怎么样?假设您有一个布尔值确定 GCM 状态,当您关闭时,您只需忽略传入的消息。

// 参见http://developer.android.com/reference/com/google/android/gcm/GCMRegistrar.html#unregister(android.content.Context public static void unregister (Context context) )GCMRegistrar

于 2013-03-01T13:57:32.203 回答
0

如果有人正在寻找答案,我的解决方案是:
在 onDestroy 中禁用我的 GCMListener 类 Intent-Filter:

getPackageManager().setComponentEnabledSetting(new ComponentName(getApplicationContext(), MyGCMListenerClass.class), PackageManager.COMPONENT_ENABLED_STATE_DISABLED, 0);

并在 OnResume 重新启用:

getPackageManager().setComponentEnabledSetting(new ComponentName(getApplicationContext(), GCMListener.class), PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);

PS 所有 GCM 消息都将被忽略,因此您以后不会收到它们。

于 2016-03-24T10:57:58.537 回答