현재 Android 애플리케이션은 IntentService
을 사용하여 SOAP WebService를 호출합니다. Android 애플리케이션에서 IntentService 브로드 캐스트 리시버를 등록 해제해야합니까?
IntentService
onHandleIntent()
방법 내에서
LocalBroadcastManager
통해 호출 액티비티 SOAP 응답 데이터를 반환 그
onResume()
방법 다음
final Intent localIntent = new Intent(FASTEST_BROADCAST_ACTION);
localIntent.putExtra(FASTEST_EXTENDED_DATA, xmlUtility.getFastestServiceId());
LocalBroadcastManager.getInstance(getApplicationContext()).sendBroadcast(localIntent);
부름 활성 방송 청취자를 등록
@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);
}
모든 것이 잘 작동하고 웹 서비스가 호출되며 필요한 응답 데이터가 내 활동으로 리턴됩니다. 난 항상이 예외가
/**
* 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;
}
}
}
: - - : 나는 현재 활동을 떠나 내 onPause
방법이 코드를 unregisterReceiver
를 호출 할 때
문제는 오는
Failed unregistered receiver java.lang.IllegalArgumentException: Receiver not registered
수신자 등록 : -
java.lang.IllegalArgumentException: Receiver not registered: [email protected]
왜이 예외가 발생 - :등록 수신기 = [email protected]
예외를 일치?
왜이 수신기를 등록 취소 할 수 있습니까?
등록을 취소하기 전에 내 IntentService
마무리 (예 : onDestroy()
메서드 호출)가 원인입니까?
좋은 자리를 사용해야합니다. 고맙습니다 – Hector