【转】android程序连接网络出现android.os.NetworkOnMainThreadExceptionat
错误:
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中的违规等。
第二条语句设置了虚拟机的一组监控策略,参数一致,因此不再赘述。
这样,在保证了网络和磁盘访问受控之后,主线程就允许我们对网络资源进行访问。
来自http://blog.csdn.net/dragon08/article/details/7666172
转载于:https://www.cnblogs.com/meizixiong/archive/2012/11/07/2758808.html
【转】android程序连接网络出现android.os.NetworkOnMainThreadExceptionat相关推荐
- 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 ...
最新文章
- 区块链热度飙升 BAT抢先布局话语权争夺战开打
- 超级智能城市:更高质量的幸福社会
- 让 Git 全局性的忽略 .DS_Store
- 使用ONVIF协议控制海康威视球机
- C# WebBrowser 设置代理
- bzoj 1024 [SCOI2009]生日快乐——模拟
- springboot主线程_springboot中的多线程.md
- webpack + react
- html圆形分成六份,在ai里怎么把一个圆平均分成几份
- 互联网创新创业大赛优秀范例_第五十九期创业沙龙——“互联网+”大学生创新创业大赛实践案例...
- OSPF骨干区域和非骨干区域通信
- 解决ZipEntry.getSize()返回-1的问题
- linux运维工程师毕业设计,论文写作:运维工程师毕业论文怎么写?
- 谷歌大牛Jeff Dean是如何成为互联网战神的
- JVM的内存区域划分(jdk7和jdk8)
- 【云海轻站可视化DIY建站系统V1.0.28】功能模块+可视化编辑建站系统+商用多开版+插件+公众号
- SuperMap iPortal 中地图大屏九寨沟模板制作过程
- 如何利用OBS 开源软件向srs服务器推流 通过VLCplayer 播放视频
- aws mongodb_使用Node.js,AWS Lambda和MongoDB Atlas进行无服务器开发
- 【锐捷无线】胖AP模式限速
热门文章
- 电商 APP 下单页(俗称车2) 业务流程概要设计
- 程序的灵魂-----算法
- EasyUI 在aspx页面显示高度不正常解决办法
- PHP日期、时间戳相关的小程序
- 各种推荐资料汇总。。。
- 大学四年, 专业心得
- 关于HbSrv.exe
- sockjs.js:1609 GET http://192.168.1.119:8080/sockjs-node/info?t=1617976777339 net::ERR_CONNECTION_TI
- 微信支付—微信H5支付「PC端扫码支付」
- jdk和maven配置