0

Google Cloud Messaging を使用してプッシュ通知を受信するアプリケーションを開発しています。問題は、「SplashActivity」で registerReceiver() を実行していることです。これは、GCM サーバーでの初期作業、フェッチおよび登録に使用します。問題は、アクティビティがこれを行うと、Intent を使用して MainActivity が開かれ、次のエラー メッセージが表示されることです。

Activity <package>.SplashActivity has leaked IntentReceiver
<package>.GCMMessageReceiver@40ed1c38 that was originally 
registered here. Are you missing a call to unregisterReceiver()?

ここで何をしますか?アクティビティを終了するときに IntentReceiver の登録を解除したくありません。アプリがプッシュ通知を受信し続けるようにしたいからです (閉じていても)。これを行うための推奨される方法は何ですか?

前もって感謝します :)

4

2 に答える 2

1

アクティビティから registerReceiver() を呼び出すと、アクティビティのコンテキストに関連付けられます。代わりに、getApplicationContext().registerReceiver() を呼び出します。

そして... BroadcastReciever オブジェクトが SplashAcitivty に直接関連付けられていないことを確認してください。つまり、内部 (非静的) クラスを BroadcastReciever オブジェクトとして使用しないでください。私は通常、そのようなものをアクティビティから遠ざけ、代わりにアプリケーション シングルトンで行います。

于 2013-09-08T20:08:37.910 に答える
0

アプリを閉じてもプッシュ通知を受信し続けたい

では、なぜ使用しているのregisterReceiver()ですか?GCM サンプルが示す<reciever>ように、 をマニフェストに入れます。

于 2013-09-08T20:09:45.177 に答える