zoukankan      html  css  js  c++  java
  • android.os.NetworkOnMainThreadException

    顾名思义是不能在主线程上发送网络请求,访问网络的代码不能写在主线程中。

    据说在android 4.0版本前不会报错。

    可能是因为网络请求比较耗时,会阻塞主线程。我们可以新建一个Thread, 向Handler发送Message来执行网络访问。

    也可以降低minSdkVersion

     要切记的是我们不能在新建的Thread类中的run方法内执行有关有界面UI的操作,典型的就是不能进行setText方法,因为Android中子线程是不允许刷新UI的。

    有关UI的操作必须放到handler中去执行。

    new Thread(){
       public void run() {
    //在这里进行非UI操作,包括访问网络
    //给mHandler发一个空信息
    mHandler.sendEmptyMessage(0);
    
              }
    }.start;
    
    
    
    Handler mHandler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
          //在这里进行UI操作
        }
    }
    

      

    其他人的解决

    http://blog.csdn.net/haida360/article/details/9181545

    http://blog.csdn.net/wotoumingzxy/article/details/7797295

    http://www.cnblogs.com/freexiaoyu/archive/2012/04/13/2445707.html

  • 相关阅读:
    Rex 密钥认证
    MQTT协议之moquette 安装使用
    开源MQTT中间件:moquette
    Hazelcast入门简介
    Maven和Gradle对比
    rex 上传文件并远程执行
    myeclipse配置gradle插件
    ansible 新手上路
    CentOS release 6.5 (Final) 安装ansible
    spring boot 使用profile来分区配置
  • 原文地址:https://www.cnblogs.com/nova-/p/3633022.html
Copyright © 2011-2022 走看看