在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