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

android.os.NetworkOnMainThreadException

2014-01-15 16:36 267 查看



在android 2.2上设计的下载程序,在android 4.0上运行时报android.os.NetworkOnMainThreadException异常,原来在4.0中,访问网络不能在主线程中进行,可以这么解决,在主程序中增加:

// 详见StrictMode文档

@Override

protected void onCreate(Bundle savedInstanceState)

{

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,通过文件保存相应的log

.build());

StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()

.detectLeakedSqlLiteObjects() //探测SQLite数据库操作

.penaltyLog() //打印logcat

.penaltyDeath()

.build());

}

super.onCreate(savedInstanceState);

}

代码注意 StrictMode是2.3以上版本才有的

当然,这不是很好的作法,访问网络是很容易阻塞ui造成无响应的,最好的方法还是把访问网络放在线程中。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: