转自:http://www.fengfly.com/plus/view-206565-1.html
当我们在使用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;
- }
- }
- }
相关推荐
本篇内容主要给大家讲解了Android Webview拦截ajax请求的详细讲解,需要的朋友一起来学习一下。
Android WebView 缓存详解 一. 两种缓存类型: 页面缓存:加载一个网页时的html、JS、CSS等页面或者资源数据,这些缓存资源是由于浏览器 的行为而产生,开发者只能通过配置HTTP响应头影响浏览器的行为才能间接地...
主要介绍了详解android 用webview加载网页(https和http),详细的介绍了两个错误的解决方法,有兴趣的可以了解一下
主要介绍了Android Webview添加网页加载进度条实例详解的相关资料,需要的朋友可以参考下
都是关键代码片段,因为每个项目每个人产生的问题不同,Video在webview中加载不出来原因很多,可能是客户端少了参数,也可能是前端出了问题,经过研究后对Android WebView 加载H5Video标签做此详解。 博客地址 ...
本篇文章主要介绍了详解Android WebView加载html片段,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
主要介绍了详解Android Webview加载网页时发送HTTP头信息的相关资料,需要的朋友可以参考下
推荐阅读:Android Webview添加网页加载进度条实例详解 先给大家展示下效果图:这个效果图大家一看就懂,在生活经常见到 1.wevbview_progressbar.xml <layer-list xmlns:android=...
webView 加载网页的时候可能占用大量内存,导致应用程序OOM。 webView 在访问结束的时候可以直接杀死该进程,防止内存泄漏。 webView 在崩溃的时候不影响主进程。 webView独立进程需要注意什么 由于进程之间内存...
Android中webview与JS交互、互调方法实例详解 前言: 对于试水的功能,一般公司都会采用H5的方式来开发,可以用很少的资源与很短的项目工期来完成。 但许多情况下,H5页面会需要一些原生持有的一些如用户信息之类的...
项目中遇到数学展示问题,常规的Textview显示处理不了数学公式,利用图片生成对服务器又产生较大压力,经过查询,可以通过webview加载JS实现。IOS同样的方法也可实现,但JS渲染效率远高于安卓。对Webview做下总结。 ...
第三篇 Android开发基础详解 第7章 常用控件 7.1 Button(按钮) 7.2 ImageButton(图片按钮) 7.3 ToggleButton(开关按钮) 7.4 TextView(文本视图) 7.5 ImageView(图片视图) 7.6 EditText(编辑框) 7.7 ...
主要给大家介绍了关于Android中实现WebView和JavaScript的互相调用的相关资料,文中通过示例代码介绍的非常详细,对各位Android开发者们具有一定的参考学习价值,需要的朋友下面来一起看看吧。
android用户界面之WebView教程实例汇总 android用户界面之GridView教程实例汇总 android用户界面之SurfaceView教程实例汇总 android用户界面之Notification教程实例汇总 android用户界面之TextView教程实例汇总 ...
android studio主要用WebView来加载发布好的WebApp,打包生产APP。 其中由于显示一些pdf文档,所以研究了一下,记录一下心得,同时也希望帮助到新手们。 android 显示网络pdf,基本原理:先将pdf文件通过Download...
随着混合开发模式比较流行,很多时候,我们需要在原生的基础上,使用 WebView 加载网页,这样控制更加方便。今天我们来看看,如何将 Java 对象 和 List 集合传值给 JS 调用。 如何将 Java 对象实例传值给 JS 其实将...