public class CustomRequest extends JsonObjectRequest {
public CustomRequest(String url, JSONObject params,
Listener<JSONObject> listener, ErrorListener errorListener)
throws JSONException {
super(Method.POST,url, params, listener,
errorListener);
this.setShouldCache(Boolean.TRUE);
}
}
Ich hatte gehofft, dass dieses Stück Code für mich ausreichen würde, um implizite Zwischenspeicherung von Antworten zu erhalten. Ich bin mir nicht sicher, ob es funktioniert oder nicht, weil ich unter der Annahme war, wenn eine Anfrage gesendet wird:Android Volley + JSONObjectRequest Caching
es den Cache zuerst treffen würde und dass
dann, wenn die Ergebnisse onresponse senden kommen aus dem Remote-Server durch sie an die onresponse
-Update zur Verfügung stellen würde:
ich dachte, wie den Cache manuell abzurufen und rekonstruieren es i nto zu einem JSONObject und sende es über OnResponse-Funktion, aber das scheint nicht effizient zu sein, wenn man bedenkt, dass es implizites Caching gibt. Die JsonObjectRequest-Klasse sollte JSONObject als zwischengespeicherten Eintrag anstelle von unverarbeiteten Antwortdaten zurückgeben.
Aber ich bin immer noch interessiert zu wissen, ob ich einen Fehler mache.
Die Ambiguität ist ausschließlich auf den Mangel an Dokumentation zurückzuführen, also entschuldige ich mich, wenn mir etwas ganz offensichtlich fehlt.
bedeutet das die Cache über dauern wird, onDestroy? Damit das nächste Mal die App erstellt wird, wird es aus dem Cache abrufen? – gaara87
Ja, der Cache wird nicht nur im Speicher, sondern auch auf der Festplatte gespeichert (Details siehe DiskBasedCache-Klasse). Als Schnelltest laden Sie einige Daten, beenden Sie Ihre App, schalten Sie WLAN oder 3g aus und geben Sie Ihre App erneut ein. Sie können die Cache-Größe auch im Feld "mMaxCacheSizeInBytes" angeben. –
Ja, es wird gespeichert, während ich in der App bin, aber wenn ich die App verlasse und in die App zurückkehre, gibt das Abrufen aus dem Cache null zurück. Daher die Frage, ob es zwischen den Aktivitätslebenszyklen lebt. – gaara87