2017-09-29 2 views
0

브로드 캐스트 수신기를 만들었고 정상적으로 작동합니다. 하지만 그 클래스에 핸들러를 전달해야합니다. 브로드 캐스트 수신기 클래스에 매개 변수를 전달하는 방법은 무엇입니까?

public static class DataReceiver extends BroadcastReceiver { 

     Handler handler; 

     DataReceiver(Handler loghandler) { 
      this.handler = loghandler; 
     } 

      @Override 
     public void onReceive(Context context, Intent intent) { 
      //things goes here 
     } 
} 

은 현재 내가 생성자 오버라이드를 사용할 수없는 경우이 &처럼이 작동하고 사용하고 있습니다.

Intent intent = new Intent(this, DataReceiver .class); 

하지만 핸들러도 전달해야합니다. 어떻게 처리기를 보낼 수 있습니까? 감사합니다

+1

'하지만 처리기도 전달해야합니다. '왜? –

+0

기존 데이터 흐름 유지 \ –

+1

그런 다음 변경하십시오. localbroadcastmanager 사용 –

답변

1

나는 당신이 성취하려는 것을 정말로 이해하지 못하지만, 이것이 당신을 도울 수 있다고 생각합니다. "ONSTART"의 수신기를 등록

BroadcastReceiver receiveLocationReceiver = new BroadcastReceiver() { 

     @Override 
     public void onReceive(Context context, Intent intent) { 
      // Your custom action 
     } 

    }; 

    IntentFilter receiveLocationFilter = new IntentFilter(); 
    receiveLocationFilter.addAction("android.intent.RECEIVE_LOCATION"); 

:

registerReceiver(receiveLocationReceiver, receiveLocationFilter); 

등록 취소를 당신은 방송 수신기에 대한 완전히 새로운 클래스를 만들 필요는 없지만이처럼 주요 활동 내에서 사용할 수 있습니다 그것은 "이동 중지"에 : 당신이 브로드 캐스트를 보낼 필요로 할 때

unregisterReceiver(receiveLocationReceiver); 

그럼 당신이 필요로하는 모든 것입니다 :

Intent sendBroadcastIntent = new Intent("android.intent.RECEIVE_LOCATION"); 
sendBroadcast(sendBroadcastIntent); 
관련 문제