2

外部からのとを持つアクティビティ(Activity_A)があります。問題はlaunches activityです。が起動すると、に「送信」したい.handlerreceiving messageslibraryActivity_AActivity_BActivity_BActivity_A receives a messagehandlerActivity_B

どうやってするか?

受信した の一部を管理する必要があるため、handlerからActivity_Aに移動できませんActivity_BmessagesActivity_A.

の使用は避けたいと思いglobal/static variablesます。を作成するときにActivity_A参照を保存することはできますか? からにを送信する方法は?Activity_BintentmessageActivity_AActivity_B

ここで重要な点は、はい、あるアクティビティから別のアクティビティにオブジェクトを渡したいということですが、新しいアクティビティを作成する瞬間ではありません (オブジェクトをバンドルで渡します)。外部ライブラリからメッセージを受け取るたびに、非同期で実行したいと考えています。

4

2 に答える 2

9

Activity_A

String msg = "message";
Intent i = new Intent(Activity_A.this, Activity_B.class);
i.putExtra("keyMessage", msg);
startActivity(i);

Activity_B

Bundle extras = getIntent().getExtras();
String msg = extras.getString("keyMessage");

それが助けになることを願っています。

更新:
2 つのアクティビティの相互作用のプロセスについて説明しました。ただし、実行時にメッセージがライブラリから到着した場合、Activity_Bこのメソッドは関係ありません。
ハンドラーをServiceに移動してみてください。これは、必要なときに機能します。そしてActivity_AActivity_Bあなたは定期的に「新しいメッセージが来ましたか?」というサービスに問い合わせることができます。タイマーを使用します。

于 2013-04-15T11:42:42.253 に答える
0

アプリケーションはそのようには機能しません。アクティビティで何らかの仕事をしたい場合は、ユーザーに見えるようにする必要があります。サービスがバックグラウンド ジョブ (つまり、センサー処理) を実行するか、アクティビティ B をフラグメント化することを検討できます。その場合、アクティビティ A は、フラグメントがユーザーに表示されている間、フォアグラウンドのままになります。

于 2013-04-15T11:43:31.440 に答える