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

  • 相关阅读:
    saltstack实战
    ubuntu16配置mysql5.7主从同步
    推荐书单
    SpringMVC : 乐鲜电子商城
    Idea 使用指南
    SpringBoot : 人人托福系统网站
    Android : SQLite 版学生系统
    Android : 相机及本地储存
    Android : ListView 学生管理
    Android : SeekBar 实现图片旋转缩放
  • 原文地址:https://www.cnblogs.com/nova-/p/3633022.html
Copyright © 2011-2022 走看看