サービスからスティッキー ブロードキャストを送信しており、アクティビティの 1 つで受信しています。次のコードを使用してブロードキャストを送信します。
Intent i = new Intent();
i.setAction("presence");
i.putExtra("name",xmlContactName);
i.putExtra("fullname", xmlContactName.split("@")[0]);
i.putExtra("presence", presence);
sendStickyBroadcast(i);
このコードを使用して、アクティビティでブロードキャストを受信します。
receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if(action.equalsIgnoreCase("presence")){
Contact c = new Contact();
Bundle contact = intent.getExtras();
c.name = contact.getString("name");
c.fullName = contact.getString("fullname");
c.presence = contact.getString("presence");
removeStickyBroadcast(intent);
}
};
}
いくつかの投稿によると、これで十分であることがわかりました。私の知る限り、アプリがまだ実行されている間は、このインテントがアクティビティに再度送信されることはありません。ただし、アプリを閉じて再度実行すると、サービスから送信しなくても、アクティビティでブロードキャストを取得します。ブロードキャストがまだどこかに残っているようで、アプリを再起動すると再び受信されます。これまでのところ、それを取り除くために私が見つけた唯一のことは、電話を再起動することです. また、アクティビティの onDestroy() でレシーバーの登録を解除します。
ブロードキャストを完全に削除するために何かしなければならないことはありますか?