Datenaustausch: BroadcastReceiver -> Activity

  • Antworten:4
Manni
  • Forum-Beiträge: 9

28.02.2012, 15:59:53 via Website

Hallo Leute,

ich habe einen IntentService, der aus dem Internet bestimmte Daten anfordert.
Diesen Service starte ich aus meiner einzigen Activity heraus.
Der IntentService verschickt die Daten mit sendBroadcast(intent) weg.
Aus diesem Grund habe ich mir einen BroadcastReceiver erstellt, der diese Daten wieder fängt.

Mein Problem besteht nun darin diese Daten wieder an die Activity zu schicken.
Habt ihre eine Idee wie man dies bewerkstellen kann?

Antworten
Jack Slater
  • Forum-Beiträge: 39

28.02.2012, 16:25:14 via Website

versuchs mal damit

Beispiel:
1intent.putExtra("counter", String.valueOf(++counter));
2sendBroadcast(intent);

— geändert am 28.02.2012, 16:25:58

Antworten
Manni
  • Forum-Beiträge: 9

28.02.2012, 16:42:55 via Website

Diese Zeile habe ich ja bereits schon.
Die Frage ist, wie die Activity solche Anfragen abfängt, um sie auszuwerten.

Antworten
Jack Slater
  • Forum-Beiträge: 39

28.02.2012, 20:30:30 via Website

Manni
Diese Zeile habe ich ja bereits schon.
Die Frage ist, wie die Activity solche Anfragen abfängt, um sie auszuwerten.

Ja ohne einen Beispiel Code ist es für mich relativ schwer zu erraten was du schon alles hast.

Versuchs mit dem Code hier in deiner Activity:

1private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
2 @Override
3 public void onReceive(Context context, Intent intent) {
4 updateUI(intent);
5 }
6 };
7
8 private void updateUI(Intent intent) {
9 String counter = intent.getStringExtra("counter");
10 ...
11
12 }

Antworten
Manni
  • Forum-Beiträge: 9

28.02.2012, 20:47:46 via Website

Ich habe eine Klasse mit einem IntentService:
1public class RemoteIntentService extends IntentService {
2 //...
3 @Override
4 protected void onHandleIntent(Intent intent) {
5 //...
6 Intent dataAvailable = new Intent("MEIN_INTENT");
7 dataAvailable.putExtra("serverData", serverData);
8 dataAvailable.putExtra("WIDGET_ID", intent.getIntExtra("WIDGET_ID", -1));
9 sendBroadcast(dataAvailable);
10 //...
11}

Diesen Intent möchte ich gerne der im Moment laufenden und einzigen Activity übergeben.
Die Activity kann den Intent nicht direkt abfangen. Daher habe ich mir einen BroadcastReceiver gebaut, der dieses Intent auffängt:

1public class ServerDataReceiver extends BroadcastReceiver {
2
3 public static final String MEIN_INTENT = "de.mydomain.myapp.MEIN_INTENT";
4 @Override
5 public void onReceive(Context context, Intent intent) {
6 Bundle data = intent.getExtras();
7 ServerDataCollect serverData = (ServerDataCollect) data.get("Serverdata");
8 //...
9 }
10}
Der Receiver fängt es auch auf, aber mein Problem ist damit noch nicht gelöst. Ich möchte es ja an die Activity übergeben bzw. ich möchte die UI der Activity verändern.

Welche Mechanismen kann ich verwenden?

— geändert am 29.02.2012, 10:34:45

Antworten