Ho sviluppato un'applicazione che riceve una trasmissione e quindi avvia uno Activity
, dove tale Activity
interroga uno ContentProvider
che estrae informazioni dal DNS in tempo reale.Flusso di dati tra Android BroadcastReceiver, ContentProvider e Activity?
mi piacerebbe essere in grado di mescolare questo in modo che invece di andare:
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(...);
}
va:
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(...);
}
vale a dire se i query()
restituisce alcun dato voglio perdere varo Activity
e consentire al messaggio Broadcast di passare normalmente.
Se il query()
fa restituire i dati, voglio che Cursor
da fornire al il Activity
, in modo che non devo andare a query per i dati di nuovo.
A sua volta, lo Activity
dispone di un'interfaccia utente a cui l'utente deve rispondere.
È possibile?
ok, suona bene - ma - quando viene restituita la chiamata a context.startActivity()? – Alnitak
e come faccio a sapere al BroadcastReceiver se l'attività ha fatto qualcosa di utile? AFAIK Non posso usare startActivityForResult() in un BroadcastReceiver. – Alnitak
La chiamata a context.startActivity restituisce immediatamente, in sostanza, tutto ciò che fa è pianificare l'attività da avviare in un secondo momento, non appena il thread dell'evento principale è libero. – sooniln