webview在Andriod4.42版本调

在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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值