Ich habe meine eigene Antwort geschrieben, weil es das Ergebnis der Diskussion war, die in den Kommentaren meiner Frage passiert ist, und so gibt es einen gründlichen Überblick darüber, was ich für eine Lösung getan habe.
Ich endete mit Callbacks wie von verrostetem Gehirn vorgeschlagen. Es ist wichtig zu beachten, dass ich die Verwendung von android.os.Handler
zum Erstellen eines Rückrufs, nicht das Callback-Muster, das häufig mit Dingen wie Schaltflächen verwendet wird. Wie auch immer, auf die Lösung.
Schritt 1 war ein Handler in Activity B
einzurichten:
messageHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
refreshList();
}
};
Was auch immer in handle ist, was genannt wird, ist, wenn eine Nachricht an den Handler gesendet wird.
Schritt 2 ist ein android.os.Messenger
Objekt an Activity A
zu senden. Dies kann leicht mit dem Activity A
starten verwendet Intent
erfolgen:
Intent intent = new Intent(AlbumGalleryActivity.this, CreateNewPhotoHuntActivity.class);
intent.putExtra("callbackMessenger", new Messenger(messageHandler));
startActivityForResult(intent, Constants.REQUEST_CREATE_NEW_PHOTO_HUNT);
Nun werden alle Nachrichten von der android.os.Messenger
gesendet gehen an unsere android.os.Handler
.
Schritt 3, der letzte Schritt besteht darin, einen android.os.Message
aus dem android.os.Messenger
zu erstellen, der zurück an den Handler gesendet werden kann.Im Rahmen meiner Frage, wird diese innerhalb des Objekts durchgeführt, die den Fortschritt der Meldung steuert Aktualisierung:
if(totalProgress >= 100) {
notificationBuilder.setContentText("Upload complete! ");
notificationBuilder.setSmallIcon(R.drawable.ic_done_black_24dp);
notificationBuilder.setProgress(0, 0, false);
notificationManager.notify(1, notificationBuilder.build());
Message msg = Message.obtain();
msg.arg1 = 1;
try {
callbackMessenger.send(msg);
}
catch (android.os.RemoteException e1) {
Log.d(Constants.UploadProgressNotificationTag, e1.toString());
}
}
So yep das ist es. Fühlen Sie sich frei zu kommentieren, wenn Sie ein Q haben oder wenn Sie einen Fehler in dem, was ich gepostet habe, sehen. Auch ich denke, mit Broadcasts
würde auch dieses Problem lösen, aber das würde erfordern ein bisschen mehr Zeit/Aufwand zu implementieren. Danke an alle, die eine Lösung vorgeschlagen haben!
Ich denke, Sie könnten mit 'startActivityForResult()' arbeiten, wenn 'Activity B'' Activity A' startet und dessen Ergebnis benötigt. – yennsarah
Es ist nicht so, dass "Aktivität B" das Ergebnis von "Aktivität A" erfordert, es ist eher so, dass nach Beendigung der Aufgabe "Aktivität B" aktualisiert werden soll. 'Activity A' ist dafür verantwortlich, dass der Benutzer neue Inhalte erstellen und dann hochladen kann (die AsyncTask führt das Hochladen durch), während 'Activity B' eine Möglichkeit ist, hochgeladene Inhalte zu durchsuchen. Die Verwendung von 'startActivityForResult()' wäre großartig, wenn ich 'Activity A' nicht zu 'finish()' zwingen würde, bis der Upload abgeschlossen ist, aber das würde ich lieber nicht tun. – rolledback
Wenn Sie "Aktivität B" einfach neu starten möchten, verwenden Sie 'Absicht' und' Bündel' in 'onPostExecute'. – yennsarah