最近一直在做即时通讯,刚开始遇到一个问题,log打印出来的就是android.os.NetworkOnMainThreadException,大概的意思就是在主线程操作网络,以前都没注意过这个问题,也是第一次遇到!以前都是用AsyncTask,简单,快捷,还可以直接操作UI,我就是一个找虐的人,这次偏不这么做了,直接用handler,于是乎就遇到了这个问题.
Android 4.0以后不允许网络操作在主线程中进行,那就用异步方法来操作
简单贴一下代码:
new Thread(new Runnable() {@Overridepublic 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("登陆成功");};};当然你也可以直接使用AsyncTask
,都属于昨天。哪怕那山再青,那水再秀,