2016-05-12 14 views
1

Kommen von Java EE zu einer Android-Anwendung (ich bin nicht Guru in Java EE), für eine Last der Anwendung, entschieden wir uns, eine Datei asynchron zu verarbeiten, wenn die Anwendung startet, starten wir einige asynchrone Kanäle, um die Dateien zu lesen, dann öffnen wir die Hauptaktivität, die Idee ist, dass der Benutzer nicht direkt zu den Anwendungsfällen gehen kann, die diese Dateien benötigen, aber wenn er es direkt geht und das asynchrone Lesen nicht beendet wurde, sollte er warte eine Weile (was der Kunde wollte).Passing Future Objekt zwischen Aktivitäten

Meine Frage ist, wie das Future-Objekt zwischen Aktivitäten übergeben werden? Mein Team stimmte für die Verwendung von statischen Methoden oder Singletons zu, aber ich liebe Singleton wirklich nicht, weil es ein Antipattern ist und ich statische Methoden nicht mag, weil sie sich fast wie Singleton verhalten.

Versuchen parcable oder serializable, aber Zukunft verwendet niemand implementieren, ich habe versucht, RoboGuice (es basiert auf statischen Feldern, aber seine busniss), aber es ist ein wenig Buggy, wie kann ich es in android Wenn es eine andere Idee gibt, bin ich verpflichtet, Singleton oder statische Methoden zu verwenden.

+0

Über welche Art von Dateien und Daten sprechen Sie? –

+1

Genau. EventBus kann verwendet werden, um Objekte von einem Ort zu einem anderen zu senden (z. B. asyncTask zu Aktivität oder was auch immer). – Vucko

+0

Wir arbeiten an der V2 der Anwendung von der V1 (ich habe nicht in V1 gearbeitet), die V1 verwendet Dateien zum Speichern von Daten, also möchte ich nicht die ganze Anwendung ändern und eine Datenbank verwenden (keine Zeit für dass) und der Kunde will einen schnelleren Start. –

Antwort

1

EventBus kann verwendet werden, um Objekte von einem Ort zu einem anderen zu senden (z. B. asyncTask zu Aktivität). Es ist großartig und einfach zu bedienen, und es wird erreichen, was Sie perfekt machen wollen.

Sie können Ihre benutzerdefinierten Objektklassen erstellen, um sie zwischen fast allen 2 Klassen, Aktivitäten, Diensten oder was auch immer zu senden.

+0

Dies scheint eine sehr gute Lösung für den Austausch von Daten zwischen Komponenten (Intent Extras saugt), für den Augenblick werde ich es nur für die Zukunft verwenden, ich werde alten Code nicht umgestalten, das macht die Anwendung hässlich, aber ich glaube nicht, dass es andere gibt Lösung mit der zur Verfügung gestellten Zeit. –

+1

Ja, Intents sind sehr auf einfache Datentypen beschränkt. Dies ist der beste Weg, weil es noch eine Sache gibt: Es ist völlig asynchron, es liegt an Ihnen zu entscheiden, wann Sie ein Ereignis veröffentlichen (zum Beispiel in 'onPostExecute' Ihrer 'AsyncTask', wenn Sie einige Daten abrufen). – Vucko

Verwandte Themen