2

GCMメッセージの受信にGCMIntentServiceを使用しています。すべて期待どおりに機能しますが、ユーザーがアプリケーションを「終了」または停止できるようにします。その後、新しいメッセージがデバイスに配信されなくなります。

問題は、GCMIntentServiceの実行を停止するにはどうすればよいですか?すべてを閉じてアクティビティで「finish」を呼び出した後も、GCMIntentServiceは、NullRefを引き起こすようなメッセージを受信して​​いるためです。

もちろん、nullRefを回避するためにifステートメントを実行することはできますが、GCMIntentServiceを完全に停止して、実行されないようにします。

どうやってやるの?

4

2 に答える 2

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 に答える
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 に答える