“android.os.NetworkOnMainThreadException”---关于Android4.0后无法将访问网络放入主线程中的解决办法

来源:互联网 发布:美的收购库卡 知乎 编辑:程序博客网 时间:2024/04/30 10:33

今天主管出差,布置的任务又做完了,终于有时间做点自己有兴趣的事情了!


刚刚研究了下android服务器与客户端的交互,我先是用纯java代码的方式在PC上测试了一下客户端访问服务器(客户端Eclipse,服务器MyEclipse),没有发现什么问题,两者可以互发,互收数据。于是将代码移植到了android程序中,做了一个手机端登录的demo(联网操作需要在Manifest中加入权限),用模拟器测试,pass通过;而当我安装到真机上的时候居然报错!检查了一下log_cat原来出现了一个“android.os.NetworkOnMainThreadException”,翻译一下,就是网络在主线程上的错误!当然这个时候需要的就是万能的度娘啦,搜索了一下,果然,在2.3以后的android系统中,不能将访问网络的操作放在主线程中。找到原因,废话不多说,改起!


new Thread(){ @Override public void run() { // TODO Auto-generated method stub super.run(); //加入访问网络的操作!handler.sendEmptyMessage(0); //将消息0传给handler} }.start(); 接着就是与thread相关的handler出场了!public void handleMessage(Message msg) { switch (msg.what) { case 0://接收消息0//返回相关ui操作break; } }; 


欧了,把网络操作放在子线程中,问题解决,login_success!


0 0