Es gibt zwei mögliche Situationen:
Wenn Sie den einzigen Loader verwenden oder Sie mehrere haben, aber es ist Ihnen egal, welche davon ausgeführt wird:
%Vor% Sie möchten wissen, ob eine bestimmte Loader
ausgeführt wird. Es scheint, dass es nicht von SDK unterstützt wird, aber Sie können es einfach selbst implementieren.
Der Hauptgrund, warum ich es hier gepostet habe - es ist ein kniffliger Aufruf einer generischen Methode, bevor eine Loader
auf Ihre SomeLoader
geworfen wird.
Was auch immer Sie tun, wenn Sie getSupportLoaderManager.restartLoader
aufrufen, wird Ihre aktuelle Aufgabe (wenn sie gerade ausgeführt wird) nicht gelöscht. Der nächste Schritt ist also ein Aufruf von onCreateLoader
, der ein neues Loader
erstellt. Es bedeutet also, dass Sie 2, 3, 4, 5 und mehr parallele Tasks zusammen haben können (wenn Sie das nicht verhindern), die zu einem Batterieverbrauch führen und die CPU / Netzwerkbelastung übersteigen können / p>
Ich denke, dass Slava eine gute Lösung hat, aber ich habe eine Verbesserung für seinen "kniffligen" Teil:
Erstellen Sie eine Schnittstelle:
%Vor% Lassen Sie die Klasse SomeLoader
die Schnittstelle implementieren:
... und benutze es so:
%Vor% BTW Das Umsetzen einer Variablen ist nur dann sicher, wenn der Loader nicht zu einem anderen Typ in einem anderen Thread wechselt. Wenn der Loader in Ihrem Programm in einem anderen Thread wechseln kann, verwenden Sie irgendwie das synchronized
Schlüsselwort.
Verwenden:
%Vor% Gibt den Loader zurück und ruft isStarted()
auf, um zu überprüfen, ob er läuft.
Tags und Links android android-loadermanager