Кто-нибудь успешно ограничил размер своего кэша 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, но если я не смогу выполнить эту работу, не будет необходимости.

Ответ 1

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

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

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