/System.err(16258): android.os.NetworkOnMainThreadException报错

      今天遇到一个很让人郁闷的事情,这也就是程序员的必经之路吧。在用get请求网络的时候,提示System.err(16258): android.os.NetworkOnMainThreadException.

当时我看都没看log, 就检查了代码,发现就那么几句话,怎么可能出现错误呢? 然后进入log中,看了下是这个错误:System.err(16258):android.os.NetworkOnMainThreadException。断点查看的时候,发现是httpclient.execute(httpRequest)执行的时候报的错误。奇怪,怎么能报这样的错误呢? 然后就在网上找答案,网上的解决方法是:

通过修改版本号解决:

android:minSdkVersion="3"

android:targetSdkVersion="8"

我的解决想法和思路:

1.      把版本号修改低之后确实能解决问题,但有些控件等都不能使用,这绝对不是最佳的最佳的解决方案。肯定没有找到问题的关键。

2.      带着上面的问题,我继续寻找解决方案,最后发现我使用的代码在以前的项目中都没问题的,但是在新版本的android 系统上就有问题了。这肯定和系统代码有关系。最后也没去看系统代码,最后网上找到解决方法,就是在android4.0以后,像这个请求网络的代码,必须新起一个线程去操作,不能在主线程中请求网络。

3.      所以,最好的解决方案就是新启动线程,请求网络。

总结:

当我们编程时候,肯定会遇到这样或者那样的问题。首先,不要急躁,定下心来去分析,用逻辑的思路去寻找解决的方案。同时也要借助于一切能够借用的力量去寻找答案,比如网上查找,请教他人,等等。在得到解决方案之后,也要多加思考,做些总结。

 

备注:

也许这个问题解决方法对很多程序员来说,都是知道的。共同学习交流吧,谢谢!!

     

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值