关于android.os.NetworkOnMainThreadException错误

本文记录了一次在Android应用开发过程中遇到的网络访问错误——NetworkOnMainThreadException,并分享了解决该问题的过程。从理解错误原因到尝试解决方案,包括使用StrictMode进行调试及采用异步线程来避免主线程进行网络操作。

前俩天在写一个android的代码时,在一个方法中使用了网络,然后在调试的时候出现了android.os.NetworkOnMainThreadException的错误,整整2天都不知道什么错误,还以为是自己代码写错了,后来google了一下才发现是android 2.3以后访问网络不能直接在主程序中运行。。。坑啊

@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);
}

网上说加这段代码能行,但是我的直接报错,很多红色波浪线。。。。

然后想用异步线程写,但是老是提示我要用final,改了final,又说我The final local variable html cannot be assigned, since it is defined in an enclosing。。。。

啊!!!!真是坑啊,求破啊

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值