@newdancer

Как заставитьRetrofit чистить кеш получаемых данных?

Вообщем суть такая выполняется запрос покупки. после чего данные по item очищаются на сервере. Но при этом retrofit их возвращает вместе с новыми. Помогает разве что делать очистку в настройках приложения. Сам retrofit создается таким образом:
@Provides
    @Singleton
    Cache provideHttpCache(Application application) {
        //create cache storage
        File httpCacheDirectory = new File(application.getCacheDir(),  "responses");
        int cacheSize = 10 * 1024 * 1024; // 10 MiB
        return new Cache(httpCacheDirectory, cacheSize);
    }

    @Provides
    @Singleton
    OkHttpClient provideOkhttpClient(Cache cache) {
        return new OkHttpClient.Builder()
                .cache(cache)
                .addInterceptor(new AddCookiesInterceptor(mApplication))
                .addInterceptor(new ReceivedCookiesInterceptor(mApplication))
                .build();
    }

    @Provides
    @Singleton
    Retrofit provideRetrofit(OkHttpClient okHttpClient) {
        return new Retrofit.Builder()
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                .addConverterFactory(GsonConverterFactory.create())
                .baseUrl(mBaseUrl)
                .client(okHttpClient)
                .build();
    }

пробовал чистить сессию таким образом
manifest
<uses-permission android:name="android.permission.CLEAR_APP_CACHE"/>

code
public static void clearCashe(Context context) {
        File dir = context.getCacheDir();
        if (dir!=null && dir.isDirectory()) {
            String[] child = dir.list();
            for (String ch : child) {
                Log.w("TEST", "delete cashe="+ch);
                File file = new File(dir, ch);
                file.delete();
            }
        }
    }

кто что может посоветовать как с этим бороться?
  • Вопрос задан
  • 39 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы