android程序连接网络出现android.os.NetworkOnMainThreadEx
android程序连接网络出现android.os.NetworkOnMainThreadEx
错误:
android.os.NetworkOnMainThreadException
at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1099) ......
原因:是涉及到url操作的时候,访问网络不能在主程序中运行
解决:参考【http://geeksun.iteye.com/blog/1447708、http://kb.cnblogs.com/a/2311659/】
在Activity类的onCreate方法中添加下面的代码,线程的方法还没测试。
public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectDiskReads().detectDiskWrites().detectNetwork().penaltyLog().build());StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectLeakedSqlLiteObjects().detectLeakedClosableObjects().penaltyLog().penaltyDeath().build());}
Android的官方文档给出了这个类设置的目的: StrictMode是一个系统提供的开发工具,用以检测在开发过程中因为偶然的事故从而造成的系统潜在的问题,进而提示开发者对其进行修复。
StrictMode通常用于捕获磁盘访问或者网络访问中与主进程之间交互产生的问题,因为在主进程中,UI操作和一些动作的执行是最经常用到的, 它们之间会产生一定的冲突问题。将磁盘访问和网络访问从主线程中剥离可以使磁盘或者网络的访问更加流畅,提升响应度和用户体验。
显然,大多数初学者在进行网络开发时,会选择将访问网络的代码直接放到主进程中,由于和主进程的首要工作——UI交互——相矛盾,因此,必须设置一定的检测机制,以保证系统运行的流畅,所有的异常都可以被检测。
public static voidsetThreadPolicy(StrictMode.ThreadPolicy policy) 这个方法允许我们为当前应用设置一组线程运行策略机制。其中的参数是一个策略组(即一组策略)。 public static finalclass StrictMode.ThreadPolicy.Builder() Builder是StrictMode中内嵌类ThreadPolicy的一个内嵌类,在此我们调用了它的默认构造方法。 detectDiskReads().detectDiskWrites().detectNetwork().penaltyLog().build()
通过这种方式,我们设置了一组监控模式,我们要检测磁盘的读写,网络的访问, Log中的违规等。
第二条语句设置了虚拟机的一组监控策略,参数一致,因此不再赘述。 这样,在保证了网络和磁盘访问受控之后,主线程就允许我们对网络资源进行访问。
转载于:https://www.cnblogs.com/liuhg/p/4036562.html
android程序连接网络出现android.os.NetworkOnMainThreadEx相关推荐
- 【转】android程序连接网络出现android.os.NetworkOnMainThreadExceptionat
错误: android.os.NetworkOnMainThreadException at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwo ...
- android 打开网络pdf,Android 打开网络上pdf文件
1.基本思路: 打开网络pdf 思路整体还是来源与图片的加载. android中加载网络图片的框架有很多个.如image-laoder, fresco.glide等,首先都是从内存中找图片,如果内存中 ...
- android linux网络连接,Android和Linux服务器之间的TCP连接
我正在编写一个代码,需要每秒从Android移动设备向台式计算机(linux服务器)发送数据.由于数据经常发送,通过Http命中无法实现(因为会消耗时间),所以Tcp通信似乎是更好的选择,因为andr ...
- android无网络状态栏,Android中检查网络连接状态的变化,无网络时跳转到设置界面...
在AndroidManifest.xml中加一个声明 1. 2. 3. 4. 5. NetCheckReceive.java文件如下 1.import android.content.Broadcas ...
- Android --- 5G网络,android系统开发教程
Android - 5G网络 连接5G网络 检测5G网络 进行流量计费的判断 进行带宽估测 Android - 5G网络 ======================================= ...
- android 链接网络成功,Android之网络连接判断是否成功
最近工作工程中遇到一个问题.问题很简单,这里做个笔记,Android进行网络联网的一些操作时,经常会对网络是否已经连接成功进行判断.我们通常会对wifi和移动网络进行判断,我们需要判断网络设备是否开启 ...
- android 使用网络字体,android使用指定的字体
1.Android提供三种字体:"Sans","serif"和"monospace".采用android:typeface,例如androi ...
- android 检测网络ftp,Android端与Android端利用WIFI进行FTP通信
一.客户端通信工具类: import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; im ...
- android 提示网络差,Android手机直播之差网络处理和发送
今天为大家介绍Andriod手机直播流程中的差网络处理和发送过程,图玩智能为企业提供直播平台二次开发,搭建更加完善的直播系统,欢迎随时咨询www.toivan.com. 差网络处理 好的网络下视音频能 ...
- android搭建网络框架,Android 搭建MVP+Retrofit+RxJava网络请求框架(三)
上一篇中主要是将mvp+rxjava+retrofit进行了结合,本篇主要是对mvp框架的优化:建议先去看上一篇:Android 搭建MVP+Retrofit+RxJava网络请求框架(二) 针对vi ...
最新文章
- 用python写计算机专业_自学open cv,用Python写的,本人是一名学生党,因为我本专业不是搞计算机的_cc霜_学生党_教育_教育其他...
- 简单的实现IOCP服务器模型
- React Native开源项目如何运行(附一波开源项目)
- 谷歌发布深度学习新算法,适用于真实机器人的技能学习
- 通信与信号处理杂文目录
- iOS 9 学习系列: Xcode Code Coverage
- PHP获取POST数据的几种方法汇总
- 简易的CRM系统案例之SpringMVC+JSP+MySQL+hibernate框架版本
- antd4中Form.create已废弃
- (转)Unity3DUnity3D在android下调试
- 新功能:阿里云负载均衡SLB支持HTTP/HTTPS超时时间自定义功能
- js字符串转json, json转字符串
- 芯片数据手册阅读方法
- 后天淘宝客cms系统源码
- H3C交换机环路监测,NTP时间同步。
- java word转pdf在linux系统上可行
- 知识点总结之Java语言的优点
- 微信小程序开发入门实例
- html蚊子背景色,室内养这10种植物超级驱蚊,再也不用担心家里被蚊子骚扰了!...
- 【python爬虫】爬取Bing词典的单词存到SQLite数据库(加了pyqt5界面显示)
热门文章
- mysql ibd文件还原_MySQL
- python tkmessagebox_在python中关闭tkmessagebox一段时间后
- “死”法不重样,一根数据线如何从“机器伴侣”变身电脑杀手?...
- 你的项目应该如何分层?
- C#中窗体的数据传递
- 使用zTree和json构建简单树节点
- eclipse环境NDK问题汇总
- 参数学习/非参数学习算法
- ajax跨域访问问题
- Symantec 赛门铁克招聘 Security Response Manager