android webview ren cache
Android Webview Clean Cache
Jeg skrev nylig et Android-prosjekt og opplevde et problem med caching av webvisningen. Hver gang jeg går inn i programmet, bruker webvisningen hurtigbufferen. Deretter snakk om hvordan dette problemet løses.
Forstå først klassifiseringen av hurtigbufferen
Skjul side:
Når du laster inn en webside, side eller ressursdata som html, JS, CSS, etc., genereres disse hurtigbufrede ressursene av nettleserens oppførsel, og utviklere kan bare bruke
Konfigurer HTTP-svaroverskriften slik at den påvirker nettleserens oppførsel for indirekte å påvirke disse hurtigbufrede dataene. Den hurtigbufrede indeksen er plassert i: / data / data // databaser
Den tilhørende filen er plassert under: / data / data / package_name / cache / webviewCacheChromunm
Databuffer:
Inndelt i to typer: AppCache og DOM Storage
AppCache :
Vi kan selektivt buffere alt i nettleseren, fra sider, bilder, skript, css, etc.
er spesielt nyttig når det gjelder CSS- og JavaScript-filer som brukes på flere sider på et nettsted. Størrelsen er for tiden vanligvis 5M.
På Android må du aktivere (setAppCacheEnabled) manuelt, og angi banen (setAppCachePath) og kapasitet
(setAppCacheMaxSize), og Android bruker ApplicationCache.db for å lagre AppCache-data!
DOM-lagring :
lagrer noen enkle data som kan løses av nøkkel / verdipar. I henhold til det forskjellige handlingsområdet, er det to typer øktlagring og lokal lagring, som brukes til øktlagringsnivålagring (side lukkes, forsvinner) og lokalisert lagring (data vil aldri utløpe med mindre de er aktivt slettet). DOMStorage (setDomStorageEnabled) kan slås på manuelt i Android, og lagringsbanen (setDatabasePath) i Android Webkit genererer to filer for DOMStorage (my_path / localstorage) /http_blog.csdn.net_0.localstorage og my_path / Databases.db)
Det er andre situasjoner i vår faktiske utvikling.
Tøm cache
Jeg har lest mange blogger og prøvd mange metoder uten å lykkes. Ikke snakk tull, se på koden
public void deleteFile(File file) { if (file.exists()) { if (file.isFile()) { file.delete() } else if (file.isDirectory()) { File files[] = file.listFiles() for (int i = 0 i file.delete() } else { System.out.println('delete file no exists ') } }
Ring deleteFile-metoden
File webviewCacheDir = new File(getActivity().getCacheDir().getParent()) //Cache path //Delete webview cache directory if(webviewCacheDir.exists()){ deleteFile(webviewCacheDir) } android.os.Process.killProcess(android.os.Process.myPid())
Merk: android.os.Process.killProcess (android.os.Process.myPid ())
Denne koden skal drepe programmet. Hvorfor legge til denne koden? Årsaken er at hvis lokal lagringsbuffer vil bli ryddet, er det ikke nok å tømme hurtigbufferfilene. Du må drepe prosessen.
Jeg håper å hjelpe deg med utviklingen din