Ответ 1
OkHttp - это своего рода HTTP-клиент, такой как HttpUrlConnection, который реализует HTTP-кеш, мы можем отключить кеш OkHttp, как показано ниже:
OkHttpClient client = new OkHttpClient();
client.setCache(null);
Затем мы можем сохранить одну копию кэша HTTP, поддерживаемую Volley.
Улучшено:
Я бы хотел ответить на вопросы Sotti.
1 Я хотел бы знать, что такое хорошая настройка кеша при использовании Volley и OkHttp.
В моем проекте я использую один экземпляр Volley requestQueue для всех остальных API-интерфейсов, а OkHttp работал как транспортный уровень для Volley, как показано ниже.
public class VolleyUtil {
// http://arnab.ch/blog/2013/08/asynchronous-http-requests-in-android-using-volley/
private volatile static RequestQueue sRequestQueue;
/** get the single instance of RequestQueue **/
public static RequestQueue getQueue(Context context) {
if (sRequestQueue == null) {
synchronized (VolleyUtil.class) {
if (sRequestQueue == null) {
OkHttpClient client = new OkHttpClient();
client.setCache(null);
sRequestQueue = Volley.newRequestQueue(context.getApplicationContext(), new OkHttpStack(client));
VolleyLog.DEBUG = true;
}
}
}
return sRequestQueue;
}}
2 Должны ли мы полагаться на Volley или на кеш OkHttp?
Да, я использую кеш Volley для своего HTTP-кэша вместо OkHttp Cache; Это отлично работает для меня.
3 Что такое поведение по умолчанию из коробки?
Для Volley:
он автоматически создаст для вас каталог кэша по умолчанию "volley".
/** Default on-disk cache directory. */
private static final String DEFAULT_CACHE_DIR = "volley";
public static RequestQueue newRequestQueue(Context context, HttpStack stack, int maxDiskCacheBytes) {
File cacheDir = new File(context.getCacheDir(), DEFAULT_CACHE_DIR);
……
}
Для OkHttp:
Я не могу найти кеш по умолчанию в исходном коде, и мы можем установить кеш ответов, как этот пост http://blog.denevell.org/android-okhttp-retrofit-using-cache.html
4. Какое рекомендуемое поведение и как его достичь?
Как это сообщение говорит:
Volley заботится о запросе, загрузке, кешировании, потоковой передаче, синхронизации и многом другом. Он готов работать с JSON, изображениями, кэшированием, сырым текстом и допускать некоторые настройки.
Я предпочитаю использовать HTTP-кеш Volley из-за простоты настройки.
Например, мы можем иметь гораздо больший контроль над кешем, подобным этому Кэширование Android Volley + JSONObjectRequest.