Android clear cache webview

Android Webview – полностью очистить кэш

У меня есть WebView в одном из моих действий, и когда он загружает веб-страницу, страница собирает некоторые фоновые данные из Facebook.

Тем не менее, я вижу, что страница, отображаемая в приложении, одинакова при каждом открытии и обновлении приложения.

Я попытался настроить WebView на использование кеша и очистить кеш и историю WebView.

Я также следил за предложением здесь: как очистить кеш для WebView?

Но ничто из этого не работает, есть ли у кого-нибудь идеи, что я могу решить эту проблему, потому что это важная часть моего приложения.

Поэтому я внедрил первое предложение (хотя измененный код был рекурсивным)

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

На канале IRC я ​​указал на исправление для удаления кеширования из URL-соединения, но пока не вижу, как применить его к WebView.

Если я удалю свое приложение и переустановит его, я смогу обновить веб-страницу до текущей версии, то есть не кэшированную версию. Основная проблема заключается в внесении изменений в ссылки на веб-странице, поэтому внешний интерфейс веб-страницы полностью не изменяется.

Отредактированный фрагмент кода выше, опубликованный Gaunt Face, содержит ошибку в том, что если каталог не удаляется, поскольку один из его файлов не может быть удален, код будет продолжать повторять в бесконечном цикле. Я переписал его, чтобы быть действительно рекурсивным, и добавил параметр numDays, чтобы вы могли контролировать, сколько лет файлы должны быть обрезаны:

Надеюсь, что с другими людьми 🙂

Я нашел даже элегантное и простое решение для очистки кеша

Я пытался выяснить, как очистить кеш, но все, что мы могли сделать из вышеупомянутых методов, – удалить локальные файлы, но он никогда не очищает ОЗУ.

API clearCache, освобождает RAM, используемую веб-просмотром, и, следовательно, требует перезагрузки веб-страницы.

Я нашел исправление, которое вы искали:

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

Читайте также:  Corel painter для андроид

И не волнуйтесь, эти БД просто связаны с вашим приложением, поэтому вы не очищаете кеш всего телефона.

Чтобы очистить все кэши веб-кэшей, пока вы подписываете форму своего APP:

Для Lollypop и выше:

Это должно очистить кеш приложений, который должен находиться в кеше вашего веб-браузера.

Чтобы очистить историю, просто выполните:

Убедитесь, что вы используете метод ниже, чтобы данные формы не отображались как autopop при нажатии на поля ввода.

Источник

Android Webview-полностью очистить кэш

у меня есть WebView в одном из моих действий, и когда он загружает веб-страницу, страница собирает некоторые фоновые данные из Facebook.

то, что я вижу, хотя, страница, отображаемая в приложении, одинакова при каждом открытии и обновлении приложения.

Я попытался настроить WebView не использовать кэш и очистить кэш и историю WebView.

Я также следовал предложению здесь:Как очистить кэш на Объект WebView?

но ничего из этого не работает, у кого-нибудь есть идеи как я могу преодолеть эту проблему, потому что это жизненно важная часть моего заявления.

поэтому я реализовал первое предложение (хотя изменил код, чтобы быть рекурсивным)

однако это все еще не изменило то, что отображается на странице. В моем настольном браузере я получаю другой html-код на веб-страницу, созданную в WebView, поэтому я знаю, что WebView должен кэшироваться где-то.

на IRC-канале мне указали на исправление для удаления кэширования из URL-соединения, но пока не видно, как применить его к WebView.

Если я удалю свое приложение и переустановлю его, я смогу обновить веб-страницу, т. е. не кэшированную версию. Основная проблема заключается в том, что изменения вносятся в ссылки на веб-странице, поэтому передняя часть веб-страницы полностью не изменяется.

7 ответов

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

надеюсь, пригодится другим людям:)

Я нашел еще элегантное и простое решение для очистки кэша

Я пытался выяснить, как очистить кэш, но все, что мы могли сделать из вышеупомянутых методов, это удалить локальные файлы, но он никогда не очищает ОЗУ.

API clearCache, освобождает ОЗУ, используемую webview, и, следовательно, санкционирует, что страница снова загружается.

Я нашел исправление, которое вы искали:

по какой-то причине Android делает плохой кэш url, который он продолжает возвращать случайно вместо новых данных, которые вам нужны. Конечно, вы можете просто удалить записи из БД, но в моем случае я пытаюсь получить доступ только к одному URL-адресу, поэтому сдуть всю БД проще.

и не волнуйтесь, эти DBs просто связаны с вашим приложением, поэтому вы не очищаете кэш всего телефона.

чтобы очистить все кэши webview во время выхода из приложения:

для Lollipop и выше:

Читайте также:  Инстаграм для андроида самсунг

Это должно очистить кэш приложений, который должен быть там, где ваш кэш webview

очистить историю, просто:

убедитесь, что вы используете метод ниже, чтобы данные формы не отображались как autopop при нажатии на поля ввода.

Источник

[webview_flutter] Cannot clear cache on Android using webViewController.clearCache() #53122

Comments

kbokarius commented Mar 23, 2020

#52661 Steps to Reproduce

  1. Implement Flutter WebView into a test app and run on Android
  2. Login into any website
  3. Run webViewController.clearCache()
  4. Refresh the page

Expected results:
The cache and session are cleared and you are logged out of the website. This works as expected on iOS.

Actual results:
The session is not cleared and the website stays logged in.

The text was updated successfully, but these errors were encountered:

Dancovich commented Mar 24, 2020

Encountered the same issue and this is the stack trace. Aparently the method isn’t implemented on the Android side of the plugin.

wurstnudl commented Mar 28, 2020

Same for me. Currently testing on an emulator and a device, both sporting Android 10.

kbokarius commented Mar 28, 2020 •

This is a very impactful issue, please fix @Flutter_Team.

jackChauT commented Apr 8, 2020

I have this problem too.

davedega commented May 1, 2020

lqk9511 commented May 19, 2020

saturov commented May 24, 2020

Same issue here. It’s so blocking. Would it be ever resolved?

bitk0der commented May 28, 2020

Are you sure the website is not using cookies for session? Maybe you should try to clear cookies.

kbokarius commented May 29, 2020

Are you sure the website is not using cookies for session? Maybe you should try to clear cookies.

That’s definitely not the issue. We tried every possible way to clear cache/cookies, it seems that the implementation on Android is either missing or broken.

RaashVision commented Jun 9, 2020

kbokarius commented Oct 29, 2020

How is this major issue still not resolved? Is there a workaround?

kbokarius commented Oct 30, 2020

For those looking to simply clear cookies, we just found this command:

This does the trick for us fortunately. If you need all of the cache cleared, then it might not work.

wurstnudl commented Nov 20, 2020

For those looking to simply clear cookies, we just found this command:

This does the trick for us fortunately. If you need all of the cache cleared, then it might not work.

This is unfortunately not enough.

We finally had to ditch the official plugin. It just lacks too many features.

thiagotn commented Dec 28, 2020

Same problem! No updates?

Tom3652 commented May 31, 2021

Any news about this issue ?
I just ran into it now and see the last update was in December 2020.
Using webview_flutter: 2.0.8 and :

danagbemava-nc commented Aug 6, 2021 •

I am unable to reproduce the issue on the latest webview_flutter: ^2.0.10 on the latest master 2.5.0-6.0.pre.21 and stable 2.2.3 . For reference, I’ll provide the code sample I used. You might have to use the CookieManager in the event that the website uses cookies.

Читайте также:  Блок tpms для андроид

Closing the issue and labelling as fixed. If it doesn’t work for anyone, kindly leave a comment and I’ll reopen the issue.

Please do well to provide the output of flutter doctor -v as well as a minimal reproducible code sample when posting your comment as this helps us in triage.

Источник

WebView: программно очистить кеш сервис-воркера

Я также настраиваю свой WebView с тем же путем кеширования, как показано ниже:

Моя теория состоит в том, что вызов clearAppCache() также очистит кеш WebView, потому что все, что он делает, — это очищает ту же папку кеша, которую я установил для WebView.

Но поскольку мой WebView теперь загружает страницу, которая использует сервис-воркера , я обнаружил, что это, похоже, не очищает кеш сервис-воркера . У меня были отчеты от одного пользователя о том, что для того, чтобы действительно очистить работу сервис-воркера, им нужно вручную очистить содержимое следующей папки (на своем корневом устройстве):

На основании этого сообщения я попытался добавить следующую строку в свою функцию clearAppCache() :

Но все же это, похоже, не влияет на очистку кеша сервис-воркера.

Любые идеи? Да, я знаю, что кеш работника службы можно очистить с помощью javascript (см. Сообщение по ссылке выше), но мне нужен способ сделать это прямо с Android.

2 ответа

Теперь я нашел способ удалить кеш сервис-воркера. Мой каталог данных находится по адресу:

Обратите внимание на наличие подкаталога Service Worker в app_webview , что является немного раздачей.

Итак, чтобы очистить кеш сервис-воркера, кажется, что вам просто нужно удалить этот подкаталог:

Или, если быть более жестоким, кажется, что вы можете просто удалить всю подпапку app_webview и все, что в ней:

Что меня по-прежнему смущает, так это то, что, несмотря на то, что путь кеширования для WebView с webSettings.setAppCachePath(cachePath) установлен в каталоге кеша (см. Мой исходный пост), WebView решил использовать app_webview для кэширования сервис-воркеров. Может быть, он использует каталог кеша для традиционного http-кеширования и выбирает свое собственное местоположение ( app_webview ) для кэширования сервис-воркера? Хотя это все еще кажется неправильным. Кроме того, как уже упоминалось, один пользователь сообщил о наличии подкаталога Cache в app_webview , и они находятся на KitKat (Android 4.4), который не поддерживает сервисных работников . не знаю, почему этот каталог app_webview/Cache используется, а не (или в дополнение к) cache . У меня вообще нет app_webview/Cache .

Я не знаком с взаимодействиями Android WebView. Но если предположить, что вы можете запустить JavaScript из контекста страницы в вашем локальном источнике, следующий код должен очистить все в API хранилища кэша для вашего источника:

Использование заголовка Clear-Site-Data — еще один вариант, если у вас есть контроль над удаленным веб-сервером. это обслуживает ваш HTML, и если вы знаете, что у ваших пользователей будет WebView на основе Chrome 61+.

Источник

Оцените статью