2017-01-24 5 views
0

私の現在のAndroidアプリケーションはIntentServiceを使用してSOAP WebServiceを呼び出します。AndroidアプリケーションでIntentServiceブロードキャスト受信者の登録を解除する必要がありますか

IntentServiceonResume()方法

@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()メソッドを呼び出しています)ですか?

答えて

1

LocalBroadcastManagerを使用して登録を解除していません。

あなたは、私はそれを逃したかさっぱりだが!このLocalBroadcastManager.getInstance(getApplicationContext()).unregisterReceiver(mDepartureBroadcastReceiver);

+0

良い場所を使用する必要があります。ありがとうございました – Hector

関連する問題