• 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中的违规等。

    第二条语句设置了虚拟机的一组监控策略,参数一致,因此不再赘述。 这样,在保证了网络和磁盘访问受控之后,主线程就允许我们对网络资源进行访问。

  • 相关阅读:
    [转]PublishingFeatureHandler(发布功能参数)
    抽象类与接口使用的MSDN建议
    [转]SharePoint内容定制之XSLT高级用法——使用Muenchian方法分组XML数据
    MOSS中的DelegateControl机制
    [转]SharePoint内容定制之XSLT高级用法——带返回值的函数调用
    问题:加了访问权限也无法访问网站。
    [转]Writing Custom Entries to the Audit Log in Windows SharePoint Services 3.0(如何记录自定义审核日志)
    .NET使用C#连接TIBCO的JMS消息服务
    [转]SharePoint 2007 and 2010 Farm ports – configuring firewall(如何配置服务器场中的防火墙)
    [转] SharePoint Features elements, scope and other info
  • 原文地址:https://www.cnblogs.com/liuhg/p/4036562.html
Copyright © 2020-2023  润新知