Android 4.0以后,默认情况下是不允许在主线程中访问网络。同样的程序在Android2.3上运行完全正常,而跑到Android4上面,bug出现了...
看了一下异常:android.os.NetworkOnMainThreadException
多线程中访问网络-既然系统默认不允许在主线程中访问,那么再开一个线程好了,这样在处理复杂流程的时候也不会影响界面的流畅,用户体验也好。采用handler消息处理:
使用单独线程进行网络操作,将结果进行回传:
new Thread(new Runnable()
{
@Override
public void run() {
Message m = new Message();
m.what = 0;
m.obj=//你的网络操作
handler.sendMessage(m);
}
}
}
获取网络操作结果:
handler = new Handler() {
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg.what == 0) {
//获取你的消息;
} else if (msg.what == 1) {
}
}
};