3

내 신청서에 BroadcastReceiver을 사용하고 싶습니다. ActivitiesAsyncTask 결과 표시기가 있고 따라서 AsyncTasks도 있습니다. 나는 나의 접근 방식이 약간 잘못되었거나 뭔가를 놓쳤다 고 생각합니다.BroadcastReceivers 사용에 관한 몇 가지 문제

여기 내가 무엇을하고 있는지 : 우선, onCreate 중에 registerReceiver 방법을 사용하여 수신자를 BroadcastReceiver으로 등록했습니다. 나는 A와 B 활동을했습니다 내 응용 프로그램에서

protected BroadcastReceiver myReceiver = new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     String msg_for_me = intent.getStringExtra("some_msg"); 
     Log.i("Tutorial", msg_for_me); 
    } 
} 

:처럼 내 수신기 보인다. 각각에는 서로 다른 작업에서 메시지를받는 여러 수신자가 있습니다. 그건 그렇고, 나는 B 액티비티를 시작하는 액티비티를 분명히해야한다.

나는 활동 A에서 수신자를 사용하고, 활동 A는 startActivity을 사용하여 시작 B를 사용하고 있습니다. 활동 B에서 AsyncTask을 실행 중이며 onPostExecute에 B 활동의 상황과 함께 방송을 보내고 있습니다. 그러나 여하튼 아직도 활동의 수신기는 메시지를 얻고있다. 두 수신기는 모두 같은 내용이지만 이름이 다릅니다.

그래서 여기 내 문제입니다 :

  • 해야하는 I unregisterReceiver 내가 onPause 방식에 새로운 활동을 시작했을 때?
  • BroadcastReceiver은 한 통화에 대해서만 사용하고 있습니까? 메시지를 보낼 때마다 다시 등록해야합니까?
  • 나는 어떤 수신기도 Manifest으로 정의하지 않았 음을 확신한다. 나는 이것이 내가 잘못하고있는 것이라고 생각한다. 이것이 좋은 경우 방송을 보내는 동안 IntentFilter를 어떻게 사용할 수 있습니까?

불확실한 질문이 있으면 알려주십시오. BroadcastReceiver에 대한 단서는 훌륭하고 만족 스러울 것입니다.

답변

2
  1. 예, 활동 일시 중지시 브로드 캐스트 수신기의 등록을 취소해야합니다. 그것은 입니다.
  2. 브로드 캐스트 리시버는 하나의 호출에 사용할 수 없습니다. 브로드 캐스트가 등록 된 인 텐트에 대해 완료 될 때마다 호출됩니다.
  3. 당신은이 같은 OnResume에 특정 의도에 대한 수신기를 등록 할 수

mContext.registerReceiver (iReceiver, 새로운 android.content.IntentFilter ("android.intent.action.BATTERY_CHANGED"));

iReceiver이

,

iReceiver = new IntentReceiver(); 

private class IntentReceiver extends BroadcastReceiver { 
    private final String LOG_TAG="IntentReceiver"; 

    @Override 
    public void onReceive(Context arg0, Intent intent) { 

    } 
} 

및 등록 해제이 같은 정답을 찾을 경우, 표시하시기 바랍니다 OnPause

mContext.unregisterReceiver(iReceiver); 
+0

에서 동일한. – VendettaDroid

+0

답장을 보내 주셔서 감사합니다.하지만 여전히 B 액티비티의 수신기가 잘 작동하지 않습니다. B 액티비티의 컨텍스트를 사용하여 브로드 캐스트를 보내는 경우에도 액티비티의 수신자는 메시지를받습니다. 너는 어떤 제안이라도 있니? 그건 그렇고, 이것이 내 주요 문제입니다. 누군가가이 문제를 해결하자마자이를 받아 들일 것입니다. – Martin

+0

활동 A와 B의 코드로 질문을 편집 할 수 있습니까?나는 그것에 더 많은 것을 도우려고 노력할 수있다. – VendettaDroid