He desarrollado una aplicación que recibe una difusión y luego lanza un Activity
, donde Activity
consulta un ContentProvider
que extrae información del DNS en tiempo real.Flujo de datos entre Android BroadcastReceiver, ContentProvider y Activity?
Me gustaría ser capaz de mezclar esto para que en vez de ir:
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(...);
}
es decir, si los query()
no devuelve datos quiero perder la oportunidad de lanzamiento Activity
, y permite que el mensaje de difusión se caiga de forma normal.
Si el query()
qué retorno de datos, quiero que Cursor
a suministrar a la Activity
, de modo que no tengo que ir a la consulta de los datos de nuevo.
A su vez, el Activity
tiene su propia interfaz de usuario a la que el usuario debe responder.
¿Esto es posible?
bien, suena bien, pero, ¿cuándo regresa la llamada a context.startActivity()? – Alnitak
y ¿cómo informo al BroadcastReceiver si la actividad hizo algo útil? AFAIK No puedo usar startActivityForResult() en un BroadcastReceiver. – Alnitak
La llamada a context.startActivity devuelve inmediatamente, esencialmente, todo lo que hace es programar la actividad que se iniciará en un momento posterior tan pronto como el hilo del evento principal esté libre. – sooniln