顾名思义是不能在主线程上发送网络请求,访问网络的代码不能写在主线程中。
据说在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