今天主管出差,布置的任务又做完了,终于有时间做点自己有兴趣的事情了!
刚刚研究了下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!