android.os.NetworkOnMainThreadException 异常处理

转载 2013年12月04日 10:14:00

目是2.1开发 测试手机是android4.0时候提示 android.os.NetworkOnMainThreadException异常

出错误地方是访问网络的webservice有问题

在网上找了半天说是用

@Override
protected void onCreate(Bundle savedInstanceState)
{
// TODO Auto-generated method stub
String strVer=GetVersion.GetSystemVersion();
strVer=strVer.substring(0,3).trim();
float fv=Float.valueOf(strVer);
if(fv>2.3)
{
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.detectDiskReads()
.detectDiskWrites()
.detectNetwork() // 这里可以替换为detectAll() 就包括了磁盘读写和网络I/O
.penaltyLog() //打印logcat,当然也可以定位到dropbox,通过文件保存相应的log
.build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
.detectLeakedSqlLiteObjects() //探测SQLite数据库操作
.penaltyLog() //打印logcat
.penaltyDeath()
.build()); 
}
super.onCreate(savedInstanceState);

}

代码注意 StrictMode是2.3以上版本才有的没办法我又把项目升级成2.3

但这样做2.3以下版本安装完成后打开后就报错,在调用StrictMode之前做了下版本判断

 从 Android 2.3 开始提供了一个新的类 StrictMode,该类可以用于捕捉发生在应用程序主线程中耗时的磁盘、网络访问或函数调用,可以帮助开发者改进程序,使主线程处理 UI 和动画在磁盘读写和网络操作时变得更平滑,避免主线程被阻塞。

 

给 Android 应用开发者的十个建议

android.os.Build.VERSION.RELEASE;返回当前系统版本

以上问题可以解决。

 

注意:造成这样的错误原因是代码不符合Android规范,如果把上面访问方式改为异步操作就不会出现在4.0上访问出现 android.os.NetworkOnMainThreadException异常

 如:

new Thread(){
@Override
public void run(){
//你要执行的方法
//执行完毕后给handler发送一个空消息
handler.sendEmptyMessage(0);
}
}.start();

 

//定义Handler对象
private Handler handler =new Handler(){
@Override
//当有消息发送出来的时候就执行Handler的这个方法
public void handleMessage(Message msg){
super.handleMessage(msg);
//处理UI
}
};

什么是异常? 在什么情况用异常处理机制?

什么事异常????     异常(exception) 是程序运行过程中发生的事件,  该事件可以中断程序指令的正常执行流程.   异常的处理机制(重点) 1当JAVA程序运行时出现问题时,系...
  • woshi2512901978
  • woshi2512901978
  • 2013年01月17日 23:02
  • 5616

Spring统一异常处理

一、异常 异常,为我们处理非正常的业务流程提供了很好的解决方案。异常机制给你的代码可读行、可维护性带来了好处,同时,程序的健壮性也得到了增强。当然,异常也不是万能的,在有些项目中并不适用,比如:纯算...
  • na_tion
  • na_tion
  • 2014年06月01日 19:48
  • 3240

【SpringMVC学习07】SpringMVC中的统一异常处理

我们知道,系统中异常包括两类:编译时异常和运行时异常RuntimeException,前者通过捕获异常从而获取异常信息,后者主要通过规范代码开发、测试通过手段减少运行时异常的发生。在开发中,不管是da...
  • eson_15
  • eson_15
  • 2016年06月23日 20:47
  • 32396

Spring-Web项目中的异常处理

前言异常体系在任何计算机语言中都有着重要的分量,但是对于普通开发者来说总是存在着多多少少的疑问:什么时候使用异常?什么时候要对异常进行统一处理?该如何对异常进行统一处理?这里,我将把我们后台系统的异常...
  • BuquTianya
  • BuquTianya
  • 2016年04月10日 22:30
  • 2222

使用Spring MVC统一异常处理实战

1 描述  在J2EE项目的开发中,不管是对底层的数据库操作过程,还是业务层的处理过程,还是控制层的处理过程,都不可避免会遇到各种可预知的、不可预知的异常需要处理。每个过程都单独处理异常,系统的代码耦...
  • ufo2910628
  • ufo2910628
  • 2014年10月23日 16:22
  • 109142

【VS开发】C++异常处理操作

异常处理的基本思想是简化程序的错误代码,为程序键壮性提供一个标准检测机制。 也许我们已经使用过异常,但是你会是一种习惯吗,不要老是想着当我打开一个文件的时候才用异常判断一下,我知道对你来说你喜欢...
  • LG1259156776
  • LG1259156776
  • 2016年05月21日 21:34
  • 1673

异常处理原则

《Rules for Developing Robust Programs with Java Exception》第6部分,作者总结的实用规则的译文。...
  • u010278882
  • u010278882
  • 2015年09月25日 16:55
  • 1178

详解Linux内核异常处理体系结构

本节内容:Linux内核异常处理的的初始化过程和异常发生时的处理流程。 【首先来区分一下两个概念:中断(Interrupt)和异常(Exception)。中断属于异常的一种,就拿2440开发板来说,他...
  • u011549260
  • u011549260
  • 2015年03月17日 22:00
  • 1102

JAVA中的异常处理机制及异常分类

JAVA的异常处理机制:如果某个方法不能按照正常的途径完成任务,就可以通过另一种路径退出方法。在这种情况下会抛出一个封装了错误信息的对象。此时,这个方法会立刻退出同时不返回任何值。另外,调用这个方法的...
  • sinat_36713319
  • sinat_36713319
  • 2017年04月01日 16:18
  • 3429

网页前端的异常处理方法、异常处理系统及异常处理服务器

摘要 本发明提供一种网页前端的异常处理方法、异常处理系统及异常处理服务器,包括:收集网页前端的异常信息,并根据收集的渠道判断异常类型;根据所述异常类型获取异常关键字;获取网页浏览器的通用信息;将...
  • dongwenkai365506
  • dongwenkai365506
  • 2016年04月16日 11:22
  • 1978
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android.os.NetworkOnMainThreadException 异常处理
举报原因:
原因补充:

(最多只允许输入30个字)