私が達成したいのは、ユーザーに「Start broadcast receiving」と「Stop broadcast receiving」と言うボタンを与えることです。Persisting BroadcastReceiverリファレンス
私は(機能 'をスタート放送受信') "android.provider.Telephony.SMS_RECEIVED" の意図のためにBroadcastReceiverを登録してい:
incomingSmsReceiver = new IncomingSmsReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction("android.provider.Telephony.SMS_RECEIVED");
getApplicationContext().registerReceiver(incomingSmsReceiver, filter);
その後、私はストップ放送」のunregisterReceiver()を使用しています受信: '
getApplicationContext().unregisterReceiver(incomingSmsReceiver);
ご覧のとおり、同じ参照(private static BroadcastReceiver incomingSmsReceiver;
)を使用しています。
問題がある:
これは、限り、私のアプリのプロセスが終了しないと正常に動作します。ユーザーが「ブロードキャストの受信を開始」をクリックした後、私のアプリがAndroidによって殺されたとき、私はincomingSmsReceiver
の参照を失っています(私のアプリを次に実行すると、デフォルトでnull
に設定されます)。リファレンスが失われているため、ユーザーがブロードキャストの受信を停止する方法はありません。
この参照を維持する方法そして、getApplicationContext().unregisterReceiver(incomingSmsReceiver);
にAndroidでアプリのプロセスを再作成した後に電話をかける方法を教えてください。
しかし、 'public abstract void unregisterReceiver(BroadcastReceiver receiver)'メソッドの意図とは関係ありません。 BroadcastReceiverリファレンスのみを取得します。 – ncreated
@回帰:答えを更新しました!間違いをおかけして申し訳ありません。 –