これを行う方法はいくつかありますので、私がこれを行う方法を2つ説明します。
オプション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はより汎用性があり、アプリケーションが起動していないとき(たとえば、起動時に起動されたサービスで放送受信機が実行されているときなど)でも使用でき、アクティビティの状態に関係なくアクティビティが開始され、アクションが実行されます。
オプションの内部クラスとして
BroadcastReceiver
を定義します。放送受信機は、通知が受信されると実行される。 SMSなど。しかし、私はそれを行って、うまくいく – user1190019