异常:android.os.NetworkOnMainThreadException

来源:互联网 发布:想在淘宝直播 编辑:程序博客网 时间:2024/04/30 06:43

       今天在MainActivity中通过HttpURLConnection来向服务器发送请求访问服务器资源时,报出android.os.NetworkOnMainThreadException异常,经过网上查找资料后发现是因为版本问题,在4.0之后不允许在主线程中做一些类似于访问网络这样会耗时的操作,Android 4.0版本之后如果在主线程如果执行Http请求都会报这个错,解决方案暂时总结如下两种:

       一:

      在onCreat方法中添加如下代码:

//4.0之后才有下面的方法StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectDiskReads().detectDiskWrites().detectNetwork().penaltyLog().build());StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectLeakedSqlLiteObjects().detectLeakedClosableObjects().penaltyLog().penaltyDeath().build());
     二:

     修改项目的AndroidManifest.xml文件,将最小支持的版本修改为9之前的版本(自己测试10也就是2.3.3还是会报错)

<uses-sdk        android:minSdkVersion="8" />

    三:

     将访问服务器的操作放到子线程中去运行。

  目前正在摸索学习中,对错误的解决能力有限,可能还会有别的解决方法,暂时先列出这三点,后面遇到再来补充。


0 0