Loader und LoaderManager - Wie ermittelt man, ob ein aktueller Loader aktiv ist und läuft?

9

Wie können Sie einen LoaderManager abfragen, um zu sehen, ob gerade ein Loader läuft?

    
synic 01.03.2012, 23:33
quelle

3 Antworten

2

Es gibt zwei mögliche Situationen:

1. Fall

Wenn Sie den einzigen Loader verwenden oder Sie mehrere haben, aber es ist Ihnen egal, welche davon ausgeführt wird:

%Vor%

zweiter Fall

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.

a) Fügen Sie einfach das Flag

hinzu %Vor%

b) und benutze es (ein bisschen knifflig): -)

%Vor%

Der Hauptgrund, warum ich es hier gepostet habe - es ist ein kniffliger Aufruf einer generischen Methode, bevor eine Loader auf Ihre SomeLoader geworfen wird.

Erinnerung

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>     

Slava 03.03.2017 01:41
quelle
0

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:

%Vor%

... 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.

    
ffonz 31.01.2018 13:26
quelle
-1

Verwenden:

%Vor%

Gibt den Loader zurück und ruft isStarted() auf, um zu überprüfen, ob er läuft.

    
Daniel De León 19.07.2013 23:55
quelle