最近一直在做即时通讯,刚开始遇到一个问题,log打印出来的就是android.os.NetworkOnMainThreadException,大概的意思就是在主线程操作网络,以前都没注意过这个问题,也是第一次遇到!以前都是用AsyncTask,简单,快捷,还可以直接操作UI,我就是一个找虐的人,这次偏不这么做了,直接用handler,于是乎就遇到了这个问题.
Android 4.0以后不允许网络操作在主线程中进行,那就用异步方法来操作
简单贴一下代码:
new Thread(new Runnable() {
@Override
public void run() {
login();
Message message=Message.obtain();
handler.sendMessage(message);
}
}).start();
private Handler handler=new Handler(){
public void handleMessage(android.os.Message msg) {
text.setText("登陆成功");
};
};