ホームページ  >  記事  >  ウェブフロントエンド  >  全能の WebView (2) WebView_html/css_WEB-ITnose で HTML Web ページのリソースを高速化する

全能の WebView (2) WebView_html/css_WEB-ITnose で HTML Web ページのリソースを高速化する

WBOY
WBOYオリジナル
2016-06-21 08:58:021861ブラウズ

最近、携帯電話のトラフィックを使用しているときに、WebView でページがすぐに読み込まれないのですが、静的ファイルを SD カードにキャッシュして、次回この Web ページにアクセスできますか。 ? このとき、最後にキャッシュされた静的ファイルを SD カードからドラッグすると、トラフィックが節約されるだけでなく、読み込み速度も向上します。小さなテストを書いてみましょう (js をアセットに配置します)~

shouldInterceptRequest

API 11 から、この種の問題を解決するために shouldInterceptRequest が導入されました。このメソッドは、Load からアプリに通知できます。指定されたリソースをネットワークからロードするのではなく、ローカルにロードします。

WebView は、ネットワークにリクエストを返し、応答データを返します。その後、 shouldInterceptRequest メソッドを呼び出して、アプリが提供するローカル データを使用して、WebView がネットワーク データを独自にロードする方法を置き換えます。 WebResourceResponse では、MIME タイプとエンコード形式を指定する必要があります。

    webview.setWebViewClient(new WebViewClient() {       {        @Override        public WebResourceResponse shouldInterceptRequest(WebView view, String url) {           return replaceJs(view, url);        }    });    protected WebResourceResponse replaceJs(WebView view, String url) {        if (url.startsWith("http://img1.cache.netease.com/f2e/lib/js/ne.js")) {            return new WebResourceResponse("text/html", "utf-8",                    FileTool.streamFromAsset(this, "js/hlct-com.js"));        } else {            return null;        }    }public class FileTool {    public static InputStream streamFromAsset(final Context ctx, final String file) {        try {            return ctx.getAssets().open(file);        } catch (Exception ignored) {        }        return null;    }}

上記のコードを使用すると、WebView 内の js リソースを置き換えることができます。ただし、Web ページを開く速度を速くすると、アプリの APK パッケージのサイズも大きくなります (リソースはローカルに配置されます)。時間に対するスペース (スペースに対する時間) の選択はユーザー次第です。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。