Caused by: android.os.NetworkOnMainThreadException错误解决办法
错误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错误解决办法相关推荐
- system.err android.os.NetworkOnmainThreadException 错误解决办法
学习HttpClient是,出现了这个异常,原因暂时还不知道. 解决办法:修改 AndroidManifest.xml <uses-sdkandroid:minSdkVersion=" ...
- 如何修复“ android.os.NetworkOnMainThreadException”?
运行RssReader的Android项目时出现错误. 码: URL url = new URL(urlToRssFeed); SAXParserFactory factory = SAXParser ...
- linux编译安装的报错,linux编译安装时常见错误解决办法
This article is post on https://coderwall.com/p/ggmpfa 原文链接:http://www.bkjia.com/PHPjc/1008013.html ...
- adb avd install 失败_Android 模拟器(emulator-5554...)出现错误解决办法
Android 模拟器 出现错误解决办法: 1.Unable to get view server version from device exlipse下编写好android应用程序时候,右键项目 ...
- Android之如何解决android.os.NetworkOnMainThreadException的异常
android.os.NetworkOnMainThreadException 首先从字面的意思理解为网络工作在主线程的异常,也就是说网络请求不能在主线程里面 android4.0以后不能在主线程发起 ...
- Android Eclipseproject开发中的常见调试问题(二)android.os.NetworkOnMainThreadException 异常的解决的方法...
android.os.NetworkOnMainThreadException 异常的解决的方法. 刚开是把HttpURLConnectionnection 打开连接这种方法放在UI线程里了,可能不是 ...
- 解决发http get请求的时候不成功,出现android.os.NetworkOnMainThreadException的异常
解决发http get请求的时候不成功,出现android.os.NetworkOnMainThreadException的异常 参考文章: (1)解决发http get请求的时候不成功,出现andr ...
- Android编译出现com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536错误解决办法
踩过的坑, 以下操作,必须在app module中进行. ========================================== ** Android编译出现com.android.de ...
- [Android开发那点破事]解决android.os.NetworkOnMainThreadException
昨天和女朋友换了手机,我的iPhone 4S 换了她得三星I9003.第一感觉就是好卡,果断刷机.以前是Android 2.3的系统.回来刷成了4.4. 好了,问题来了.在我用手机测试我们的APP的时 ...
最新文章
- Delphi常见的运行期Access Violation错误分析
- 蓝牙连接不上车要hfp_科普|蓝牙耳机小知识,这些都不知道难怪你选不到好的蓝牙耳机...
- 百度、头条、网易 Android 等社招面试题目
- 解析函數論 Page 22 級數收斂的一個充分條件
- 内存中数据模型和大数据持久性
- java模拟数据库压测_Jmeter压测工具使用总结
- html中写一个占内存很大死循环代码,HTML中的循环
- Mysql原理+ 多实例 +表损坏
- SDL_BlitSurface的参数是两个PNG时,如何保护其透明度
- 寻找指定型别的父控件
- 程序员代码面试指南 IT名企算法与数据结构题目最优解.pdf
- MySQL 分区表——《高性能MySQL》
- Matplotlib动图:FuncAnimation实现
- 语法分析器之递归子程序法
- 一般网站建设大概需要多少钱?
- 【Python】小甲鱼Python学习总结——代码版
- 写了一个svg七巧板拼图的小东西
- html5 div 拱桥形状制作,纯CSS3+DIV实现小三角形边框效果的示例代码
- Hadoop系列之-7、Hadoop3.x的介绍
- 对接斑马打印机 usb模式+打印机共享模式