博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【转】android程序连接网络出现android.os.NetworkOnMainThreadExceptionat
阅读量:5125 次
发布时间:2019-06-13

本文共 1552 字,大约阅读时间需要 5 分钟。

错误:

android.os.NetworkOnMainThreadException

at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1099)

......

原因:是涉及到url操作的时候,访问网络不能在主程序中运行

解决:参考【、】

在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

你可能感兴趣的文章
iOS OC语言: Block底层实现原理
查看>>
页面分页
查看>>
Sock基础
查看>>
Linux中通过Socket文件描述符寻找连接状态介绍
查看>>
css 水平垂直居中那些事
查看>>
CLIST
查看>>
iOS vs. Android,应用设计该如何对症下药?
查看>>
HTML第七章总结
查看>>
MySQL和Oracle的区别
查看>>
windows service 2008 内存吃尽解决方案
查看>>
sublime2使用和配置
查看>>
Visual Studio2012打开时弹出“遇到异常:这可能是由某个扩展导致的”错误的解决办法...
查看>>
IDEA设置取消自动显示参数提示
查看>>
84. Largest Rectangle in Histogram
查看>>
MySQL-5.7.21非图形化下载、安装、连接问题记录
查看>>
RabbitMQ 声明Queue时的参数们的Power
查看>>
中国经济怎么办之我见
查看>>
什么是REST API?
查看>>
目标检测近5年发展历程概述(转)
查看>>
14. Java基础之泛型
查看>>