Volleyキャッシュ管理を無効にする方法はありますか?私のアプリはGoogle Volleyライブラリを使用してトランスポートレイヤーを管理していますが、サーバーはCache-Controlヘッダーを使用しないため、独自のキャッシュマネージャー実装を持っています。 Volleyキャッシュが完全に役に立たないので使用しているスペースを節約したいです。
簡単な方法はありますか?または、独自のバージョンのRequestQueue
を実装する必要がありますか?
どんな提案も感謝します。
Volleyに実装されているデフォルトのRequestクラス(StringRequest、JsonRequestなど)のいずれかを使用する場合、リクエストオブジェクトをvolley RequestQueueに追加する直前にsetShouldCache(false)を呼び出します。
request.setShouldCache(false);
myQueue.add(request);
Requestクラスの独自の実装がある場合は、クラスのコンストラクターでsetShouldCache(false)を呼び出すことができます。
このソリューションは、各リクエストのキャッシュを個別に無効にします。 volleyライブラリからグローバルにキャッシュを無効にする場合、RequestクラスでmShouldCache変数をfalseに永続的に設定できます。
コンストラクターからRequestQueueを作成し、最初のパラメーターとしてNoCache
オブジェクトを渡すことができます。 2番目のパラメーターは、AndroidHttpClient
またはHttpURLConnection
の選択に基づくネットワークトランスポートです。
RequestQueue queue = new RequestQueue(new NoCache(), new BasicNetwork(new HurlStack()));
詳細については このドキュメントを参照 。
ドキュメントによると、BasicNetwork
はVolleyのデフォルトのネットワーク実装です。
_request.setShouldCache(false);
_
gETリクエストには十分ではないようです。ただし、キューに追加する前にキャッシュをクリアすると役立つようです
_myRequestQueue.getCache().clear();
_
これを私のVolleyシングルトンのgetRequestQueue()
メソッドに入れました。キューを返す前。