私の現在のAndroidアプリケーションはIntentService
を使用してSOAP WebServiceを呼び出します。AndroidアプリケーションでIntentServiceブロードキャスト受信者の登録を解除する必要がありますか
IntentService
はonResume()
方法
@Override
protected void onResume() {
super.onResume();
mDepartureBroadcastReceiver = new DepartureBroadcastReceiver();
final IntentFilter statusIntentFilter = new IntentFilter(FASTEST_BROADCAST_ACTION);
LocalBroadcastManager.getInstance(getApplicationContext()).registerReceiver(mDepartureBroadcastReceiver, statusIntentFilter);
Log.v(LOG_TAG, "Register receiver = " + mDepartureBroadcastReceiver);
}
に次のように私の呼び出し活性が放送リスナーを登録そのonHandleIntent()
方法
final Intent localIntent = new Intent(FASTEST_BROADCAST_ACTION);
localIntent.putExtra(FASTEST_EXTENDED_DATA, xmlUtility.getFastestServiceId());
LocalBroadcastManager.getInstance(getApplicationContext()).sendBroadcast(localIntent);
内からLocalBroadcastManager
介して発呼アクティビティにSOAP応答データを返しますすべて正常に動作し、Webサービスが呼び出され、必要な応答データが自分のアクティビティに返されます。私はいつもこの例外を取得
/**
* Dispatch onPause() to fragments.
*/
@Override
protected void onPause() {
super.onPause();
if (mDepartureBroadcastReceiver == null) {
//INTENTIONALLY LEFT BLANK
} else {
try {
Log.v(LOG_TAG, "About to unregister receiver");
unregisterReceiver(mDepartureBroadcastReceiver);
Log.v(LOG_TAG, "Successfully unregistered receiver");
} catch (final Exception exception) {
Log.e(LOG_TAG, "Failed unregistered receiver", exception);
} finally {
mDepartureBroadcastReceiver = null;
}
}
}
: - - :私は現在のアクティビティを終了し、私は私の方法でこのコードを持っているunregisterReceiver
を呼び出そうとするとき
問題が来る
Failed unregistered receiver java.lang.IllegalArgumentException: Receiver not registered
受信者登録: -
java.lang.IllegalArgumentException: Receiver not registered: [email protected]
なぜこの例外が発生しない - :登録レシーバ= [email protected]
は例外にマッチしますか?
なぜ受信機を登録解除できませんか?
私は登録を解除する前に私のIntentService
仕上げ(例えば、onDestroy()
メソッドを呼び出しています)ですか?
良い場所を使用する必要があります。ありがとうございました – Hector