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

  • 相关阅读:
    oracle 安装
    C++中 接口的定义 COM
    linux查看及改变运行级别
    BSD Apache GPL LGPL MIT
    DES MAC PIN HEX
    c语言字符输出格式化
    oracle
    Windows C++ 子目录数量
    GetProcAddress 宏
    How do I install Adobe Flash on Debian Wheezy?
  • 原文地址:https://www.cnblogs.com/nova-/p/3633022.html
Copyright © 2011-2022 走看看