Was mich bei Volley etwas unsicher macht, sind die Objekte RequestQueue, ImageLoader und ImageLoader.ImageCache.
In den Beispielen, denen ich begegnet bin, wurden sie in onCreate () instanziiert, aber es scheint nicht sinnvoll zu sein, für jede einzelne Aktivität eine neue Anforderungswarteschlange zu erstellen. Ich habe auch viele Aktivitäten und Dienstleistungen und ich werde es überall verwenden. Wenn ich sie wirklich in jedem Service oder in jeder Aktivität instanziieren muss, wie teuer sind sie?
Was nutzt die Best-Practice-Produktions-App, um diese Objekte zu instanziieren und darauf zuzugreifen?
Meine Erfahrung mit Volley ist, dass ich eine RequestQueue innerhalb der Application-Klasse initiieren würde, die einen globalen Kontext an die Anwendung übergibt. Ich kann den Nachteil nicht erkennen, dass dies nur eine statische Referenz auf die RequestQueue als solche ist:
%Vor%In der Dokumentation wird wie für die Application-Klasse angegeben:
Wird aufgerufen, wenn die Anwendung gestartet wird, bevor Aktivitäts-, Service- oder Empfängerobjekte (mit Ausnahme von Inhaltsanbietern) erstellt wurden. Implementierungen sollten so schnell wie möglich durchgeführt werden (z. B. mithilfe der verzögerten Initialisierung des Status), da die in dieser Funktion verbrachte Zeit sich direkt auf die Leistung beim Starten der ersten Aktivität, des ersten Service oder des ersten Empfängers in einem Prozess auswirkt. Wenn Sie diese Methode überschreiben, rufen Sie super.onCreate () auf.
Es kann also davon ausgegangen werden, dass unsere RequestQueue zum Senden von Anforderungen in einem Service, einer Aktivität, einem Loader usw. verfügbar ist.
Nun, was den ImageLoader betrifft, würde ich eine Singleton-Klasse machen, die einige Funktionen umschließt, so dass Sie nur eine Instanz von ImageCache und einen ImageLoader, zB
, haben %Vor%Wenn Sie ein wirklich gutes Beispiel für ImageLoading mit Volley ausprobieren möchten, dieses Beispielprojekt, ist es wirklich nützlich.
Hoffe, das hilft.
Tags und Links android android-volley