欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

android.os.NetworkOnMainThreadException

程序员文章站 2022-05-31 14:16:39
...

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

据说在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