私はカウントダウンタイマーを持つサービスを持っています。タイマーの終了後、このサービスはブロードキャストメッセージを送信します。メッセージを送信するために次のコードを使用します:ブロードキャストメッセージの受信を防ぐ方法
Intent intent = new Intent("CancelEvents");
intent.putExtra("message", "cancelled");
LocalBroadcastManager.getInstance(TimerClass.this).sendBroadcast(intent);
私はブロードキャストレシーバーを備えた別のアクティビティを持っています。これは、ブロードキャストメッセージを受信するために使用したコードです。
@Override
protected void onCreate(Bundle savedInstanceState)
{
LocalBroadcastManager.getInstance(getApplicationContext()).registerReceiver(cancelReceiver,
new IntentFilter("CancelEvents"));
}
private BroadcastReceiver cancelReceiver = new BroadcastReceiver()
{
@Override
public void onReceive(Context context, Intent intent)
{
String message = intent.getStringExtra("message");
if (message.equals("cancelled"))
{
Toast.makeText(this,
"Your Ride Got Cancelled", Toast.LENGTH_LONG).show();
}
}
};
受信は問題ありません。しかし問題は、受信者がいない他のすべての活動でもメッセージが受信されることです。これをやめる方法は? onStopにあなたがのonCreate()でcancelReceiverを登録している活動での活動の()コールバックを定義することによって、あなたの放送の登録を解除し
独自のインテントフィルタを使用します。 – kulvinder
"しかし問題は、受信者がいない他のすべての活動でもメッセージが受信されることです。" - それが意味することを正確に説明してください。レシーバなしで他のコンポーネントがどのように放送を受信するのですか? –
開業しているすべてのアクティビティにトーストが表示されます –