Как использовать модифицированный кеш, когда сервер выключен и ответа нет? - PullRequest
0 голосов
/ 28 сентября 2019

Я использую модификацию для получения данных с сервера, я включил систему кеширования, и она работает нормально, но только когда пользователь не в сети.Я хочу использовать модифицированный кеш, когда сервер не отвечает.

Может кто-нибудь сказать мне, как я могу это сделать?

Я использую эти перехватчики и добавил их в свой клиент.

static Interceptor onlineInterceptor = new Interceptor() {
    @Override
    public okhttp3.Response intercept(Chain chain) throws IOException {
        okhttp3.Response response = chain.proceed(chain.request());
        int maxAge = 60; // read from cache for 60 seconds even if there is internet connection
        return response.newBuilder()
                .header("Cache-Control", "public, max-age=" + maxAge)
                .removeHeader("Pragma")
                .build();
    }
};

static Interceptor offlineInterceptor = new Interceptor() {
    @Override
    public okhttp3.Response intercept(Chain chain) throws IOException {
        Request request = chain.request();
        if (!isInternetAvailable()) {
            int maxStale = 60 * 60 * 24 * 30; // offline cache available for 30 days
            request = request.newBuilder()
                    .header("Cache-Control", "public, only-if-cached, max-stale=" + maxStale)
                    .removeHeader("Pragma")
                    .build();
        }
        return chain.proceed(request);
    }
};

public static boolean isInternetAvailable() {
    ConnectivityManager connectivityManager = ((ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE));
    return connectivityManager.getActiveNetworkInfo() != null && connectivityManager.getActiveNetworkInfo().isConnected();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...