WebView簡介(加速載入篇)

來源:互聯網
上載者:User
當我們在使用WebView時,如果載入的網友比較大,這載入速度將非常慢。

現總結幾種加速WebView載入的方法1、提高渲染的優先順序webView.getSettings().setRenderPriority(RenderPriority.HIGH);2、使用webView.getSettings().setBlockNetworkImage,把圖片載入放在最後來載入渲染。參照樣本1.3,使用硬體加速,該功能在Android 3.0 (API level 11)才加入。具體參照:http://developer.android.com/guide/topics/graphics/hardware-accel.html樣本1:package com.robin;
import com.robin.R;import android.app.Activity;import android.app.Dialog;import android.app.ProgressDialog;import android.content.Context;import android.content.DialogInterface;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.util.Log;import android.view.View;import android.view.Window;import android.webkit.DownloadListener;import android.webkit.WebChromeClient;import android.webkit.WebSettings;import android.webkit.WebSettings.RenderPriority;import android.webkit.WebView;import android.widget.Button;import android.widget.Toast;
/** * @author Administrator *  */public class MyActivity extends Activity {private WebView webView;final static String TAG = "MyActivity";Handler handler = new Handler();boolean blockLoadingNetworkImage=false;//static long t=0;//static long t1=0;String link;protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);link = getIntent().getStringExtra("url");setContentView(R.layout.news_details);
webView = (WebView) findViewById(R.id.webView);webView.getSettings().setBuiltInZoomControls(true);webView.getSettings().setJavaScriptEnabled(true);webView.getSettings().setRenderPriority(RenderPriority.HIGH);webView.getSettings().setBlockNetworkImage(true);blockLoadingNetworkImage=true;webView.setWebChromeClient(new WebChromeClient() {public void onProgressChanged(WebView view, int progress) {// Activities and WebViews measure progress with different// scales.// The progress meter will automatically disappear when we reach// 100%//Log.i(TAG, "progress:" + progress);if(loadingProgressDialog!=null&&loadingProgressDialog.isShowing())loadingProgressDialog.setProgress(progress);if (progress >= 100) {/*if(t==0)t=System.currentTimeMillis()-t1;elset=(t+System.currentTimeMillis()-t1)>>1;t1=System.currentTimeMillis()-t1;Log.i(TAG, "t:" + t/1000+" t1:"+t1/1000);*/if(blockLoadingNetworkImage){webView.getSettings().setBlockNetworkImage(false);blockLoadingNetworkImage=false;}if (loadingProgressDialog!=null&&loadingProgressDialog.isShowing())dismissDialog(PROGRESS_DIALOG_CONNECTING);}}});Runnable r = new Runnable() {public void run() {webView.loadUrl(link);//t1=System.currentTimeMillis();Log.i(TAG, "url:" + link);showDialog(PROGRESS_DIALOG_CONNECTING);}};handler.postDelayed(r, 200);
}
protected void onResume() {super.onResume();if (webView.getProgress() < 100)showDialog(PROGRESS_DIALOG_CONNECTING);}
protected void onDestroy() {webView.stopLoading();webView.destroy();super.onDestroy();}
final static int PROGRESS_DIALOG_CONNECTING = 1000;ProgressDialog loadingProgressDialog = null;
@Overrideprotected Dialog onCreateDialog(int id) {switch (id) {case PROGRESS_DIALOG_CONNECTING: {ProgressDialog progressDialog = new ProgressDialog(this);progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);progressDialog.setMessage(getResources().getString(R.string.loading));loadingProgressDialog = progressDialog;return progressDialog;}default:break;}return null;}
protected void onPrepareDialog(int id, Dialog dialog) {super.onPrepareDialog(id, dialog);switch (id) {case PROGRESS_DIALOG_CONNECTING: {loadingProgressDialog.setMax(100);dialog.show();}break;default:break;}}
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.