0

ブロードキャストレシーバー内でブロードキャストイベントを受信し、この情報をすでに開いているアクティビティに渡す必要があります。再作成せずに放送受信機からアクティビティを通知するにはどうすればよいですか?これにより、不要な完全な更新が発生します。

これで、アクティビティ内で宣言されたブロードキャストレシーバー内でインテントを受信できますが、バックグラウンドでもインテントを受信する必要があるため、インテントを処理する主な場所は別のブロードキャストレシーバーです。そのため、onCreate()が呼び出されずに新しいインテントが到着したことをアクティビティに通知し、UI全体を再初期化する方法がわかりません。

NEW_TASKフラグが必要だと思います。そうしないと、実行されません。

PS:これらの非常識な反対票は何についてですか。活動を再現しないような方法で放送受信機から活動を開始する方法よりも関連性が高いものは何でしょうか。ところで、私はあなたとの答えを見つけるつもりです。なぜ苦い反対票を投じるのですか?答えが使えると知っているからだと思います。まあ、私はおそらくこの素晴らしい質問への答えをすぐに自分で投稿するでしょう。

4

2 に答える 2

2

このアクティビティを再現する場合は、次のようにします。

intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

再作成したくない場合は、次のようにします。

  • このアクティビティがタスクの一番上にある間、<code> intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
  • マニフェストでアクティビティを宣言します。android:lauchMode= "singleTask";
于 2012-12-12T03:57:42.170 に答える
1

そして答えは.....

マニフェストでアクティビティを宣言する

  android:launchMode="singleTop"

onResume()では、インテントが以前のように値を引き継いでいないように見えるので、この回答についてのフィードバックを希望します。そのため、放送受信機内のインテントに設定した値を引き出すことができません...

更新:レシーバーから値を取得するには、アクティビティ内で次のことを行う必要がある場合があります。

             @Override 
     public void onNewIntent(Intent intent)
     {
         setIntent(intent);
     }
于 2012-12-12T03:38:27.113 に答える