错误Caused by: android.os.NetworkOnMainThreadException

:查了下原因上在4.0之后在主线程里面执行Http请求都会报这个错,大概是怕Http请求时间太长造成程序假死的情况吧。

解决办法有两个思路,分别是:

第一种方法:直接忽视,强制使用(强烈不推荐,但是修改简单)
在MainActivity文件的setContentView(R.layout.activity_main)下面加上如下代码

if (android.os.Build.VERSION.SDK_INT > 9) {StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();StrictMode.setThreadPolicy(policy);
}

或者
//详见StrictMode文档
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectDiskReads().
detectDiskWrites().detectNetwork().penaltyLog().build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectLeakedSqlLiteObjects().
detectLeakedClosableObjects().penaltyLog().penaltyDeath().build());
从 Android 2.3 开始提供了一个新的类 StrictMode,该类可以用于捕捉发生在应用程序主线程中耗时的磁盘、网络访问或函数调用,可以帮助开发者改进程序,使主线程处理 UI 和动画在磁盘读写和网络操作时变得更平滑,避免主线程被阻塞。

第二种方法:使用Thread、Runnable、Handler (推荐使用)
在Runnable中做HTTP请求,不用阻塞UI线程~

public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);this.setContentView(R.layout.share_mblog_view);new Thread(runnable).start();
}Handler handler = new Handler(){@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);Bundle data = msg.getData();String val = data.getString("value");Log.i("mylog","请求结果-->" + val);}
}Runnable runnable = new Runnable(){@Overridepublic void run() {//// TODO: http request.//Message msg = new Message();Bundle data = new Bundle();data.putString("value","请求结果");msg.setData(data);handler.sendMessage(msg);}
}

转载于:https://www.cnblogs.com/jasonxcj/p/4803371.html

Caused by: android.os.NetworkOnMainThreadException错误解决办法相关推荐

  1. system.err android.os.NetworkOnmainThreadException 错误解决办法

    学习HttpClient是,出现了这个异常,原因暂时还不知道. 解决办法:修改 AndroidManifest.xml <uses-sdkandroid:minSdkVersion=" ...

  2. 如何修复“ android.os.NetworkOnMainThreadException”?

    运行RssReader的Android项目时出现错误. 码: URL url = new URL(urlToRssFeed); SAXParserFactory factory = SAXParser ...

  3. linux编译安装的报错,linux编译安装时常见错误解决办法

    This article is post on https://coderwall.com/p/ggmpfa 原文链接:http://www.bkjia.com/PHPjc/1008013.html ...

  4. adb avd install 失败_Android 模拟器(emulator-5554...)出现错误解决办法

    Android 模拟器 出现错误解决办法: 1.Unable to get view server version from device exlipse下编写好android应用程序时候,右键项目 ...

  5. Android之如何解决android.os.NetworkOnMainThreadException的异常

    android.os.NetworkOnMainThreadException 首先从字面的意思理解为网络工作在主线程的异常,也就是说网络请求不能在主线程里面 android4.0以后不能在主线程发起 ...

  6. Android Eclipseproject开发中的常见调试问题(二)android.os.NetworkOnMainThreadException 异常的解决的方法...

    android.os.NetworkOnMainThreadException 异常的解决的方法. 刚开是把HttpURLConnectionnection 打开连接这种方法放在UI线程里了,可能不是 ...

  7. 解决发http get请求的时候不成功,出现android.os.NetworkOnMainThreadException的异常

    解决发http get请求的时候不成功,出现android.os.NetworkOnMainThreadException的异常 参考文章: (1)解决发http get请求的时候不成功,出现andr ...

  8. Android编译出现com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536错误解决办法

    踩过的坑, 以下操作,必须在app module中进行. ========================================== ** Android编译出现com.android.de ...

  9. [Android开发那点破事]解决android.os.NetworkOnMainThreadException

    昨天和女朋友换了手机,我的iPhone 4S 换了她得三星I9003.第一感觉就是好卡,果断刷机.以前是Android 2.3的系统.回来刷成了4.4. 好了,问题来了.在我用手机测试我们的APP的时 ...

最新文章

  1. Delphi常见的运行期Access Violation错误分析
  2. 蓝牙连接不上车要hfp_科普|蓝牙耳机小知识,这些都不知道难怪你选不到好的蓝牙耳机...
  3. 百度、头条、网易 Android 等社招面试题目
  4. 解析函數論 Page 22 級數收斂的一個充分條件
  5. 内存中数据模型和大数据持久性
  6. java模拟数据库压测_Jmeter压测工具使用总结
  7. html中写一个占内存很大死循环代码,HTML中的循环
  8. Mysql原理+ 多实例 +表损坏
  9. SDL_BlitSurface的参数是两个PNG时,如何保护其透明度
  10. 寻找指定型别的父控件
  11. 程序员代码面试指南 IT名企算法与数据结构题目最优解.pdf
  12. MySQL 分区表——《高性能MySQL》
  13. Matplotlib动图:FuncAnimation实现
  14. 语法分析器之递归子程序法
  15. 一般网站建设大概需要多少钱?
  16. 【Python】小甲鱼Python学习总结——代码版
  17. 写了一个svg七巧板拼图的小东西
  18. html5 div 拱桥形状制作,纯CSS3+DIV实现小三角形边框效果的示例代码
  19. Hadoop系列之-7、Hadoop3.x的介绍
  20. 对接斑马打印机 usb模式+打印机共享模式

热门文章

  1. .Net/C# 与 J2EE/Java Web Service 互操作完整实例
  2. JDBC query VARRAY on DB level
  3. Robo 3T SQL
  4. aspnetboilerplate .net core 使用原生sql
  5. mysql 数据表操作 存储引擎介绍
  6. jsp传递参数的四种方法
  7. Objective c类的初始化
  8. 获取存储过程返回值及代码中获取返回值
  9. [整理]Git使用文章整理
  10. 搜索引擎学习(一)初识Lucene