2012-01-18 14 views
9

Quale sarebbe il modo migliore per forzare Android a memorizzare una visualizzazione Web su un supporto multimediale una volta caricata la pagina?Memorizzazione di una WebView per la navigazione offline

qualche dettaglio in più:

  • Ogni pagina sarà ricco di immagini, script e lo stile.

  • Ogni pagina sarà da 0,5 a 1 Megabyte.

  • Saranno salvati una volta chiamato OnFinished Override.

  • Sarebbe meglio salvarlo sulla scheda SD, quindi utilizzare il repository locale per aprirlo di nuovo.

Non so se dovrei usare solo un database sql per le visualizzazioni Web, o prendere ogni vista e scrivere su un file.

Se faccio quest'ultimo, quale sarebbe il modo più semplice in modo da non dover scrivere un webcrawler completo per collegare ogni file?

risposta

7

Per utilizzare la memorizzazione nella cache su Android, è necessario fornire un file manifest HTML5 insieme al codice HTML.

<!DOCTYPE html> 
<html lang="en" manifest="manifest.file"> 
<head> ... 

Il meccanismo di caching nella cache qualunque voci si elencare nel file manifesto in un database SQLite. Tieni presente che il database è per app, non per webview. (Ho avuto un sacco di problemi con questo).

Questo articolo spiega tutti i passaggi necessari per raggiungere questo obiettivo. http://web.archive.org/web/20140314001433/http://alex.tapmania.org/2010/11/html5-cache-android-webview.html

Si può fare un esempio ciao-mondo per il caching utilizzando questa pagina: http://html5demos.com/offlineapp

È possibile salvare la cache sulla scheda SD, fino a quando si aggiunge il permesso WRITE_EXTERNAL_STORAGE al manifesto dell'applicazione.

Buona fortuna!

+1

Vedo, grazie - ha senso. Ora non c'è un limite di 10 MB con questo? Voglio dire, ho visto anche nel sorgente questo: webView.getSettings(). SetAppCacheMaxSize (1024 * 1024 * 8); Ma ciò solleva ancora la domanda su quanto può essere grande? Forse solo 10 mb per pagina? Se questo è il caso, dopo che è stato memorizzato nella cache, chiamerei semplicemente la webview usando websettings.Cacheonly giusto? –

+2

Se la cartella di memorizzazione nella cache di Webview è impostata sulla scheda SD, ciò non avrà alcun impatto sulla cartella della cache dell'applicazione. Puoi anche chiamare 'webview.clearCache()' per verificare ciò, il database sulla scheda SD non verrà cancellato. – Daniel

Problemi correlati