2015-01-23 5 views
0

Activity1의 5 분마다 대화 상자를 표시해야합니다. 그래서 Thread T에서 5 분마다 방송을 보내고 Activity1에 수신기를 등록하십시오. 따라서 5 분마다 Activity1이 방송을 수신하고 대화 상자를 보여줍니다. 괜찮아. 하지만 Activity 1에서 Activity2로 이동하고 5 분 후에 Activity 1로 돌아 가면 대화 상자가 표시되지 않습니다. Activity1에 대한 브로드 캐스트 등록이 Activity2에 등록되어 있지 않기 때문입니다. Thread T가 브로드 캐스트를 전송할 때, Activity2는 그것을 등록하지 않기 때문에 그것을 수신하지 못합니다. 다른 가능한 솔루션이이 문제를 해결할 수 있습니까?백그라운드에서 활동이있을 때 방송 수신

답변

0

만 activity1에 현재 활동 때 대화 상자를 표시 등록/각각 onCreate()onStop()에 수신기를 등록 해제하려면 다음

@Override 
public void onCreate(Bundle savedInstanceState) { 
    ... 
    yourReceiver = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      //Your implementation 
     } 
    ... 
    registerReceiver(yourReceiver, new IntentFilter(YOUR_ACTION_STRING); 
} 
@Override 
public void onStop() { 
    ... 
    unregisterReceiver(yourReceiver); 
    ... 
} 

을 당신이 당신의 수신기가 항상 신호에 대한 준비하려면, 당신의 AndroidManifest를 그것을 선언하고 그것에 대한 사용자 정의 클래스를 만듭니다

<receiver android:name="your.package.name.YOUR_RECEIVER_CLASSNAME" > 
    <intent-filter> 
     <action android:name="your.action.string" /> 
    </intent-filter> 
</receiver> 
1

은 아마 당신이 5 분마다 대화를 추진하기위한 어떤 분리 된 스레드를 사용할 필요가 없습니다. Android에는 작업 예약을위한 여러 가지 메커니즘이 있습니다. 아마도 도움이 될 것입니다 : Scheduling recurring task in Android