2014-09-25 1 views
0

메서드 내에서 BroadcastReceiver의 수명주기를 관리 할 수 ​​있습니까?메서드 내에서 BroadcastReceiver를 사용할 수 있습니까?

void handleSomething() { 
    doSomethingThatWillBroadcast(); 
    BroadcastReceiver somethingReceiver = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      if (!intent.getBooleanExtra(SOMETHING_RESULT, false)) { 
       finishSomething(false); 
      } else { 
       doAnotherSomethingThatWillBroadcast(); 
       BroadcastReceiver anotherSomethingReceiver = new BroadcastReceiver() { 
        @Override 
        public void onReceive(Context context, Intent intent) { 
         finishAnotherSomething(); 
        } 
       }; 
       IntentFilter anotherSomethingFilter = new IntentFilter(ACTION_SOMETHING); 
       anotherSomethingFilter.addCategory(Intent.CATEGORY_DEFAULT); 
       registerReceiver(anotherSomethingReceiver, anotherSomethingFilter); 
      } 
     } 
    }; 

    IntentFilter somethingFilter = new IntentFilter(ACTION_DOWNLOAD_APK); 
    somethingFilter.addCategory(Intent.CATEGORY_DEFAULT); 
    registerReceiver(somethingReceiver, somethingFilter); 
} 

이 코드는 IntentService 메서드에서 사용하려고 시도하지만 모든 곳에서 등록 취소 오류가 발생합니다.

답변

0

프로세스가 진행되는 동안 라이브 상태입니다. 왜하지 말아야합니까?

return somethingReceiver; 

그리고 원하는 위치에서 관리 할 수 ​​있습니까? 내 애플 리케이션은 다른 클래스에서 recievers를 만듭니다. 코드는 귀하의 것과 동일하지만,

return somethingReceiver; 

및 매개 변수가있는 Context를 사용하십시오.

BroadcastReciever handleSomething(Context context) 
{ 
} 

는 그 다음 필요할 때

unregisterReciever(); 

전화를 잊지 마세요.


가 나는 IntentService 방법이 사용하려고하지만 사방에 오류 등록을 취소 얻을.

이전과 같은 오류가 나타납니다. 생성 된 recievers 오류에 대한 unregisterReciever()를 실행하면 오류가 사라집니다. 코드가 수신자를 만들지 만 생성 된 수신자 등록을 취소 할 수있는 방법이 없습니다.

+0

당신이 무슨 말을하고 있는지 잘 모릅니다. –

+0

@ JoshElias, 아마도 당신이 정말로 원하는 것을 분명히 이해하지 못했을 것입니다. – user3439968

+0

나는 명확히하려고 노력했다. –

관련 문제