注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

民主与科学

独立之人格,自由之思想

 
 
 

日志

 
 

WebView详解(加速加载篇)  

2012-02-09 16:36:31|  分类: Android的UI开发 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
当我们在使用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;
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;
}
}

}

  评论这张
 
阅读(5526)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017