7
我需要註冊一個接收器。我一直在使用以下模式:註冊接收器的正確模式?
@Override
protected void onResume() {
super.onResume();
registerReceiver(myReceiver, new IntentFilter(...));
}
@Override
protected void onPause() {
super.onPause();
unregisterReceiver(myReceiver);
}
private BroadcastReceiver myReceiver = new BroadcastReceiver() {
...
});
我越來越崩潰報告從市場上關於我的unregisterReceiver()調用:
java.lang.IllegalArgumentException: Receiver not registered
我想這可能是不可能的,但似乎這是正確的方式來代替:
private Intent mIntent;
@Override
protected void onResume() {
super.onResume();
if (mIntent == null) {
mIntent = registerReceiver(myReceiver, new IntentFilter(...));
}
}
@Override
protected void onPause() {
super.onPause();
if (mIntent != null) {
unregisterReceiver(myReceiver);
mIntent = null;
}
}
private BroadcastReceiver myReceiver = new BroadcastReceiver() {
...
});
是正確的模式上面?我猜可能註冊失敗,並且我們必須保存registerReceiver()的結果,並在調用unregister()之前在onPause()中檢查它?
感謝
我立足的變化過這樣一個問題: Problem with BroadcastReceiver (Receiver not registered error)
我只看過上面的第一個模式,從來沒有一個地方,你檢查的意圖響應 - 任何澄清會很好。
這個好,謝謝,是有道理的。 – user291701