我想在应用运行时停止GCM通知
public class GcmBroadcastReceiver extends WakefulBroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
ComponentName comp = new ComponentName(context.getPackageName(),
GcmMessageHandler.class.getName());
startWakefulService(context, (intent.setComponent(comp)));
setResultCode(Activity.RESULT_OK);
}
我试图获取上下文值,但是当应用程序运行时没有差异
答案 0 :(得分:0)
当应用程序位于前台时,为什么不忽略GCMIntent服务中的GCM事件。
该活动仍会进入您的服务,您只是在应用运行时无法执行您的操作。
因此,在您的GCMIntent服务中,伪代码如下所示:
protected void onReceive(Context cxt, Intent arg1) {
if (!APP_IS_RUNNING) {
// Do your GCM related action
}
...
作为替代方案,您还可以在应用程序运行时从GCM取消注册您的设备,因此不再发送消息,但我认为这将更加棘手(您必须记住重新注册app close,这可能具有挑战性。)
答案 1 :(得分:0)
您可以使用
的方法GoogleCloudMessaging.unregister
它将阻止消息到达您的应用,直到您再次注册GCM。 但谷歌开发者并不推荐