Кто-нибудь успешно ограничил размер кеша WebView?

Я создаю приложение для чтения новостей, которое время от времени загружает веб-страницы в WebView .

Я заметил, что с поведением по умолчанию кеш может стать очень необоснованным очень быстро. Независимо от того, удалит ли Android этот кеш при низкой памяти, я не согласен с тем, что мои пользователи видят 15-мегабайтное новостное приложение, когда все, кроме веб-кеша, составляет около 1 МБ.

Тем не менее, я бы хотел использовать кеш в некоторой степени. Я видел WebSettings # setAppCacheMaxSize (), и казалось, что это был только билет.

Кажется, он ничего не делает. Я закодировал следующее в методе, который вызывается функцией onCreate () моей активности, прежде чем что-либо будет загружено:

originalSourceWebView.getSettings().setAppCacheMaxSize(300*1024); (Я использовал большее, настраиваемое значение, но уменьшил его, чтобы подтвердить свою проблему).

Я удаляю 300 КБ без каких-либо фанфаров, как показано в settings->applications->manage applications->click on my app . Я слушаю в WebChromeClient # onReachedAppMaxCacheSize для событий, но это никогда не срабатывает.

Кто-нибудь успешно использовал это? Есть ли какой-то другой кеш, который я должен пытаться управлять? Документы кажутся довольно разреженными. Я вошел в источник для Android, но он просто отправляет значения в собственный код, и я не знаю, как вникать в это.

Моя тестовая среда является связующим звеном на 2.2.2. Я знаю, что мне нужно будет сделать вызовы кеша отражением, чтобы поддерживать 1.5 и 1.6, но если я не смогу выполнить эту работу, не будет никакой необходимости.

Solutions Collecting From Web of "Кто-нибудь успешно ограничил размер кеша WebView?"

Я не думаю, что есть API, чтобы делать то, что вы хотите.

setAppCacheMaxSize ограничивает размер кеша для API кэша приложений HTML5 – автономное хранилище, которое приложения HTML 5 могут использовать во время работы в вашем WebView, но похоже, что вы хотите ограничить кеш, используемый для загрузки страниц. Изображения и т. Д.

В качестве обходного пути вы можете периодически вызывать WebView.clearCache , хотя это действительно ограничивает эффективность кеша. Если вы хотите попытаться сохранить несколько последних страниц, вы можете изучить их из CacheManager прежде чем очистить кеш и затем восстановить их впоследствии.