您的位置:首页 > 移动开发

webview在Andriod4.42版本调

2015-07-30 09:58 260 查看
在Andriod4.12下面运行好好 的Apk,在4.42运行停止。

于是开始了艰苦的调试工作;

1、开始空指错误,这个应该在所有版本的都报的 错误,只是前期没有注意到。

loadurl(webView,accessPoint);

handler=new Handler(){

public void handleMessage(Message msg)

{//定义一个Handler,用于处理下载线程与UI间通讯

if (!Thread.currentThread().isInterrupted())

{

switch (msg.what)

{

case 0:

pd.show();//显示进度对话框

break;

case 1:

pd.hide();//隐藏进度对话框,不可使用dismiss()、cancel(),否则再次调用show()时,显示的对话框小圆圈不会动。

break;

}

}

super.handleMessage(msg);

}

};

其中,

public void loadurl(final WebView view,final String url){

new Thread(){

public void run(){

handler.sendEmptyMessage(0);

view.loadUrl(url);//载入网页

}

}.start();

}

把handler的声明放置在loadurl方法上面即可。

handler=new Handler(){

public void handleMessage(Message msg)

{//定义一个Handler,用于处理下载线程与UI间通讯

if (!Thread.currentThread().isInterrupted())

{

switch (msg.what)

{

case 0:

pd.show();//显示进度对话框

break;

case 1:

pd.hide();//隐藏进度对话框,不可使用dismiss()、cancel(),否则再次调用show()时,显示的对话框小圆圈不会动。

break;

}

}

super.handleMessage(msg);

}

};

loadurl(webView,accessPoint);

2、接下来的错误是 7-30 08:37:36.790: E/WindowManager(24562): android.view.WindowLeaked: Activity com.jx.htxx.activity.MyHotPointActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{45001ca8 V.E..... R.....ID 0,0-736,345} that was originally
added here

经过网上查询是 http://www.cnblogs.com/error404/archive/2011/11/21/2256953.html
于是,我增加了 onDestroy()方法

protected void onDestroy() {

// TODO Auto-generated method stub

if (pd != null && pd.isShowing())

{

pd.dismiss();

}

super.onDestroy();

}

3、接下来是 07-30 08:59:31.085: W/WebView(27760): java.lang.Throwable: A WebView method was called on thread 'Thread-1215'. All WebView methods must be called on the same thread. (Expected Looper Looper (main, tid 1) {432791e8} called on null, FYI main Looper
is Looper (main, tid 1) {432791e8})

参考 “http://www.cxyclub.cn/n/47819/”解决方法:

将 loadUrl方法重写

public void loadurl(final WebView view,final String url){

new Thread(){

public void run(){

handler.sendEmptyMessage(0);

// view.loadUrl(url);//载入网页

view.post(new Runnable() {

@Override

public void run() {

view.loadUrl(url);

}

});

此时,终于在andriod4.42下不在直接终止运行了,但是webview引入的网页迟迟加载不进来,并且有提示错误信息“07-30 09:07:54.745: W/AwContents(28940): nativeOnDraw failed; clearing to background color.”网上搜索“http://www.imooc.com/qadetail/79258”,都是关于什么flash之类的,应该不是这么回事,于是,我又切换到4.12上面,也是点击迟迟不能加载。于是这时候我就知道问题所在了,应该是自己不假思索的修改
view.loadUrl哪里的代码所致,于是进行了如下修改,终于在4.12,4.42上都正确加载web网页了。

public void loadurl(final WebView view,final String url ){

view.post(new Runnable() {

@Override

public void run() {

// TODO Auto-generated method stub

handler.sendEmptyMessage(0);

view.loadUrl(url);

}

});

}

关于以上错误,进一步了解了一下知识点:
http://www.cnblogs.com/akira90/archive/2013/03/06/2946740.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: