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