2012-02-03 4 views
25

Quale è il modo più veloce per caricare pagine Web mobili e pagine Web non mobili nella visualizzazione Web Android; caricare la cache o non caricarla affatto?Caching nella visualizzazione Web Android

E quale è lo stile consigliato per caricarlo?

In questo momento, quando non carico la cache, i siti non mobili sono molto più lenti da caricare rispetto a quando li carico nel browser nativo.

risposta

32

non utilizzare questi:

viewer.getSettings().setAppCacheMaxSize(1024*1024*8); 
viewer.getSettings().setAppCachePath("/data/data/com.your.package.appname/cache"‌​);  
viewer.getSettings().setAppCacheEnabled(true); 

Questi non hanno nulla a che fare con la cache interna di default WebView. Appcache è una funzionalità completamente diversa che significa renderti in grado di eseguire il sito Web senza una connessione Internet. Non funziona così bene e probabilmente non vuoi usarlo.

Con l'impostazione: viewer.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT) è sufficiente.

+6

Puoi eseguire il backup con un collegamento ad alcuni documenti che descrivono AppCache? Dato che "LOAD_DEFAULT" contiene la parola "default", sicuramente l'ultima riga della tua risposta non fa nulla a meno che tu non abbia impostato in modo esplicito un valore diverso da un'altra parte? –

+2

setAppCacheMaxSize è stato deprecato da api 18. http://developer.android.com/reference/android/webkit/WebSettings.html#setAppCacheMaxSize(long)] –

+0

@ ed-hinchliffe è difficile trovare una buona documentazione su questo da Google stessa , ma fanno riferimento a questo documento https://docs.webplatform.org/wiki/tutorials/appcache_beginner dalla sezione "Lavoro offline" di questo post su Google Chrome WebView: https://developer.chrome.com/multidevice/android/panoramica. Inoltre, hai ragione nel dire che la sua ultima riga nella risposta non fa nulla. – Nilzor

13

Naturalmente, l'approccio memorizzato nella cache dovrebbe essere più veloce. Questo è il motivo esatto per cui il caching è lì in primo luogo.

Ma si dovrebbe andare bene se non si disabilita specificamente la memorizzazione nella cache per la visualizzazione Web. In caso contrario, utilizzerà la cache per impostazione predefinita.

+11

Grazie. Questo stile intelligente è in cache o c'è qualche problema con questo? viewer.getSettings() setAppCacheMaxSize (1024 * 1024 * 8).; viewer.getSettings(). SetAppCachePath ("/ data/data/com.your.package.appname/cache"); viewer.getSettings(). SetAppCacheEnabled (true); viewer.getSettings(). SetCacheMode (WebSettings.LOAD_DEFAULT); – Eljas

+1

Sì, non vedo nulla di sbagliato in questo (presumo tu abbia inserito il vero nome del pacchetto nel tuo codice reale :)). In caso di dubbio, puoi giocare con le dimensioni e fare alcuni test, per vedere quale funziona meglio per il tipo di contenuto che stai caricando. Se le pagine sono grandi e stai pianificando di caricarne molte altre, potresti volere una cache più grande di 1Mb. Se sono per lo più di testo e la tua app dovrà solo visualizzarne un piccolo numero, probabilmente stai correndo con le impostazioni correnti. –

+0

Inoltre, se la risposta è soddisfacente, considera di contrassegnarla come accettata :) –