2012-02-03 14 views
25

Android webviewでモバイルウェブページやモバイル以外のウェブページを高速に読み込む方法はどれですか。キャッシュをロードするか、ロードしないか?Android webviewでキャッシュする

これをロードするにはどのようなスタイルがおすすめですか?

現時点ではキャッシュをロードしていないときは、モバイル以外のサイトでは、ネイティブブラウザで読み込むよりも読み込みがはるかに遅くなります。

答えて

32

は、これらを使用しないでください:

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

は、これらのデフォルトのWebViewの内部キャッシュとは何の関係もありません。 Appcacheは、インターネット接続なしでWebサイトを実行できるようにする全く異なる機能です。それはそれほどうまくいかず、おそらくあなたはそれを使いたくないでしょう。

これを設定すると:viewer.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT)で十分です。

+6

これを、AppCacheを説明するいくつかのドキュメントへのリンクでバックアップすることはできますか? 'LOAD_DEFAULT'に" default "という単語があることを考えれば、確かに別の値を別の場所に設定しない限り、答えの最後の行は何もしません。 –

+2

setAppCacheMaxSizeはapi 18から廃止されました。http://developer.android.com/reference/android/webkit/WebSettings.html#setAppCacheMaxSize(long)] –

+0

@ ed-hinchliffe Google自身からこれに関する良い文書を見つけるのは難しいしかし、Google Chrome WebViewのこの記事の「オフライン作業」セクションのhttps://docs.webplatform.org/wiki/tutorials/appcache_beginnerというこのドキュメントを参照しています。https://developer.chrome.com/multidevice /アンドロイド/概要。また、答えの最後の行が何もしないという点で正しいです。 – Nilzor

13

もちろん、キャッシュされたアプローチは高速にする必要があります。それが、キャッシングが最初にある正確な理由です。

ただし、webviewのキャッシュを特に無効にしない限り、問題はありません。そうしないと、デフォルトでキャッシュが使用されます。

+11

ありがとうございます。このスマートなスタイルはキャッシュするのか、これにはいくつかの問題がありますか? 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

ええ、私はそれに間違って何も表示されません(私はあなたの実際のコードに実際のパッケージ名を置くと仮定します:))。疑問がある場合は、サイズで遊んでいくつかのテストを行うことができますので、読み込んでいるコンテンツの種類に適したものを見てください。ページが大きくて、たくさんの異なるものを読み込む予定がある場合、1Mbよりも大きなキャッシュが必要になるかもしれません。テキストがほとんどテキストで、アプリが少数しか表示しない場合は、現在の設定でうまくいくでしょう。 –

+0

また、答えが満足できるものである場合は、 –

関連する問題