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);
}
}
このコードを使用すると、暗黙的に応答をキャッシュすることができます。私は、要求が送信されるという仮定の下にあったので、私は、それが動作するかどうかはわからない:Android Volley + JSONObjectRequestキャッシング
それが最初のキャッシュにヒットし、
をonresponseすることを送信し、その後場合の結果それはonresponseにそれを提供するリモートサーバーから通ってくる
アップデート:私は手動でキャッシュを取得し、それiを再構築する方法を考え出し
JSONObjectをOnResponse関数を介して送信しますが、暗黙のキャッシングがあると考えると効率的ではないようです。 JsonObjectRequestクラスは、未処理の応答データではなく、キャッシュされたエントリとしてJSONObjectを返します。
しかし、私はまだ間違いをしているかどうか知りたいです。
あいまいさはドキュメントの不足によるものなので、私が何か非常に明白なものを紛失している場合は謝罪します。
これは、キャッシュがonDestroyを超えて続くことを意味しますか?次回にアプリケーションを作成すると、キャッシュからフェッチされます。 – gaara87
はい、キャッシュはメモリだけでなくディスクにも保存されます(詳細はDiskBasedCacheクラスを参照)。クイックテストとして、データを読み込んでからアプリを終了し、wifiや3gをオフにしてアプリをもう一度入力してください。 mMaxCacheSizeInBytesフィールドにキャッシュサイズを指定することもできます。 –
はい、私はアプリにいる間キャッシュしますが、アプリを終了してアプリに戻ると、キャッシュからフェッチするとnullが返されました。したがって、活動のライフサイクルの間にそれが存在するかどうかの問題です。 – gaara87