이렇게 할 수있는 여러 가지 방법이 있으므로이 방법을 두 가지로 요약 해 보겠습니다.
옵션 1. 수신기
생성 방송 수신기 인터페이스
public interface Listener {
public abstract void onEvent();
}
private static MessageListener mListener = null;
@Override
public void onReceive(Context context, Intent intent) {
//stuff
if(mListener != null)
mListener.onEvent();
}
public static void setListener(Listener l) {
mListener = l;
}
다음 활동에 수신기를 구현 정적 참조 및 세터를 생성
class MyActivity implements Listener{
@Override
public void onResume(){
//register the listener, should probably unregister in onDestroy
BroadCastReceiver.setListener(this);
}
@Override
public void onEvent(){
//do something
}
}
그렇게 당신이 필요가
onNewIntent()
에 잡힐 것입니다 실행중인 경우
옵션 방송 수신기
Intent intent = new Intent();
Bundle bundleToSend = new Bundle();
//BUNDLE_EXTRA,DO_SOME_ACTION and ACTION_KEY are just constants so just define them somewhere
bundleToSend.putInt(ACTION_KEY, DO_SOME_ACTION);
intent.putExtra(BUNDLE_EXTRA, bundleToSend);
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);
플래그 2. 사용 의도
FLAG_ACTIVITY_SINGLE_TOP
는 시작되지 않을 경우 활동을 시작하거나 것입니다 onCreate()
과 onNewIntent()
에 일부 코드를 입력하여 번들을 추출하고 조치를 확인하십시오.
final Bundle bundleReceived = intent.getBundleExtra(BUNDLE_EXTRA);
if (bundleReceived.getInt(ACTION_KEY) == DO_SOME_ACTION) {
//do something
}
옵션 1은 실제로 활동이 최전방에있을 때 브로드 캐스트 수신기에서만 수신 할 때 유용합니다. 옵션 2는 더 다양한 기능을 제공하며, 앱이 실행 중이 아닌 경우에도 사용할 수 있습니다 (예 : 브로드 캐스트 리시버가 부팅시 시작된 서비스에서 실행 됨). 따라서 활동이 시작되고 활동이 활동 상태와 상관없이 수행됩니다.
옵션 1은 완벽했다. 알림 수신시 브로드 캐스트 리시버가 실행됩니다. SMS와 같은. 하지만, 나는 그것을 잘하고 잘 작동합니다. – user1190019