ブロードキャストを受信するアプリケーションを開発した後、 がActivity
を起動します。Activity
は、ContentProvider
を照会し、DNSから情報をリアルタイムで取得します。Android BroadcastReceiver、ContentProvider、およびActivity間のデータフロー?
私はそのように代わりに行くの本をシャッフルできるようにしたいと思います:
BroadcastReceiver.onReceive() {
Intent intent = new Intent(...);
intent.setData(...); // set a single String data
context.startActivity(intent);
}
Activity.onCreate() {
String value = intent.getData(); // get the String data
Cursor = ContentProvider.query(search);
...
setContentView(...);
}
それが行く:すなわち
BroadcastReceiver.onReceive() {
Cursor = ContentProvider.query(...);
if (cursor != null) {
Intent intent = new Intent(...);
// how do I pass the cursor?
getContext().startActivity(intent);
}
}
Activity.onCreate() {
// how do I retrieve the cursor?
setContentView(...);
}
query()
を返す場合、私は起動逃したいデータなし Activity
を使用し、ブロードキャストメッセージが通常どおりに送信されるようにします。 query()
は、データを返すない場合
は、私は再びデータのために行くと、クエリする必要がないようにCursor
は、 Activity
に供給されることを望みます。
また、Activity
には、ユーザーが応答する必要がある独自のUIがあります。
これは可能ですか?
ok、良いとは言えますが、context.startActivity()の呼び出しはいつ返されますか? – Alnitak
と、どのようにActivityが何か有用なことをしたかどうかをBroadcastReceiverに知らせますか? AFAIK私は、StartActivityForResult()をBroadcastReceiverで使用することはできません。 – Alnitak
context.startActivityの呼び出しは即座に戻ります。本質的には、メインイベントスレッドが解放されるとすぐに後で開始されるアクティビティのスケジュールです。 – sooniln