Ich habe einen Dienst, der einige Daten aus dem Internet herunterlädt, aber wenn ich versuche, es an eine Aktivität zu übergeben, um es dem Benutzer angezeigt zu bekommen, erhalte ich den folgenden Fehler:Wie kann ich Daten anzeigen, die mit einem Dienst in einer Aktivität abgerufen wurden?
E/JavaBinder: !!! FAILED BINDER TRANSACTION !!!
// This gets populated in the server based on information from a server.
byte[] downloadedData;
// Instantiated downloadedData from server connection, code removed for brevity.
// Try to start activity with downloaded data.
Intent i = new Intent(this, MainActivity.class);
i.putExtra("DATA", downloadedData);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(i);
Warum ist Ihr Dienst versucht, um eine Aktivität zu starten? Sie wissen nicht, was der Benutzer im Vordergrund macht. Verwenden Sie einen Ereignisbus (z. B. den EventBus von greenrobot), um diese Daten Ihrer Benutzeroberfläche zur Verfügung zu stellen, wenn sie zufällig im Vordergrund stehen. Wenn das Ereignis ignoriert wird, kann der Dienst die Daten in einer Datei speichern und eine "Benachrichtigung" auslösen, um den Benutzer darüber zu informieren, dass die Daten bereit sind. Im Allgemeinen ist "FAILED BINDER TRANSACTION", weil Ihre "Intent" viel zu groß ist. – CommonsWare
Vielen Dank für die schnelle Antwort @CommonsWare, aber was ist, wenn ich Event Bus für meine App nicht verwenden kann? –
"Was ist, wenn ich den Event-Bus für meine App nicht nutzen kann?" - Warum kannst du nicht? Event-Busse arbeiten für Tausende und Abertausende von Entwicklern. – CommonsWare