WebView簡介(加速載入篇)
阿新 • • 發佈:2018-11-13
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow
也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!
當我們在使用WebView時,如果載入的網友比較大,這載入速度將非常慢。 現總結幾種加速WebView載入的方法 1、提高渲染的優先順序 webView.getSettings().setRenderPriority(RenderPriority.HIGH);import com.robin.R;
/** * @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; else t=(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;
@Override protected 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; } }
}