Führt Anfragen mit Retrofit in benutzerdefiniertem Runnable aus

7

Ich migriere von Volley auf eine benutzerdefinierte Implementierung mit Retrofit , aber ich versuche, einige der Volley -Features, die ich mochte, zu meiner Implementierung hinzuzufügen, zum Beispiel

RequestQueue.cancel (String-Tag)

Wenn das Request das angeforderte Tag hat, wird es abgebrochen, indem ein Wert boolean , mCanceled , auf true gesetzt wird. Die Methode run überprüft diesen Wert und gibt zurück, wenn sie wahr ist. Um dies mit Retrofit reproduzieren zu können, sollte ich in der Lage sein, meine benutzerdefinierte Klasse zu verwenden, die Runnable anstelle der Standardklasse implementiert, wobei ich ein mTag und ein mCanceled -Feld habe. Außerdem konnte Volley ein solches Flag innerhalb der aktiven Thread s setzen und sie sofort stoppen. Meine cancelAll -Methode, die ich bereits implementiert habe, entfernt die Warteschlange einfach in eine andere Warteschlange, kann aber nicht auf die aktiven Threads zugreifen. Ist es möglich, mit Retrofit und ThreadPoolExecutor die gleichen Ergebnisse zu erzielen?

    
Vektor88 24.04.2014, 13:05
quelle

2 Antworten

26

Ich glaube, ich habe eine bessere Lösung gefunden: Anstatt die Runnable der Anfragen zu blockieren, blockiere ich die Ausführung von Callback .

Ich habe die Callback Schnittstelle erweitert:

%Vor%

, so dass jedes Callback eine Markierung und eine Abbruchflagge hat. Dann beginnt die Methode success mit:

%Vor%

Jedes Mal, wenn ich eine neue Anfrage erstelle, speichere ich die erstellte CustomCallback innerhalb einer List cancel nur die Liste und ruft cancel() für die Elemente mit dem gleichen Tag auf.

    
Vektor88 24.04.2014, 14:17
quelle
11

Ich habe eine einfach zu bedienende Klasse basierend auf Vektor88 Antwort

implementiert %Vor%

Anwendungsbeispiel

%Vor%     
Biggemot 14.08.2015 14:44
quelle