Ich habe eine Anwendung entwickelt, die eine Broadcast empfängt und dann startet eine Activity
, wo Activity
Abfragen eine ContentProvider
, die Informationen aus dem DNS in Echtzeit extrahiert.Datenfluss zwischen Android BroadcastReceiver, ContentProvider und Aktivität?
Ich möchte in der Lage sein, dies zu mischen, so dass, anstatt zu gehen:
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(...);
}
geht es:
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(...);
}
dh wenn die query()
kehrt keine Daten Ich möchte Abschuss verzichten die Activity
, und lassen Sie die Broadcast-Nachricht als normal durchfallen.
Wenn die query()
nicht Daten zurück, ich will, dass Cursor
die Activity
, zu geliefert werden, so dass ich wieder die Daten nicht gehen und Abfrage für.
Der Activity
wiederum hat seine eigene Benutzeroberfläche, auf die der Benutzer reagieren muss.
Ist das möglich?
ok, hört sich gut an - aber - wann kommt der Aufruf von context.startActivity() zurück? – Alnitak
und wie kann ich den BroadcastReceiver wissen, ob die Aktivität etwas nützliches getan hat? AFAIK Ich kann startActivityForResult() in einem BroadcastReceiver nicht verwenden. – Alnitak
Der Aufruf von context.startActivity erfolgt sofort, im Wesentlichen wird lediglich geplant, dass die Aktivität zu einem späteren Zeitpunkt gestartet wird, sobald der Main Event-Thread frei ist. – sooniln