Android handler机制在有序获取服务端通信中的使用

</pre>之前在软件设计中遇到有序获取信息的问题,如:先登录成功同时返回当前权限内的设备id,再发送请求获取设备信息,此时返回的是所有设备id(因此这一步需要根据上一步获取到的id进行设备信息过滤),再获取设备的实时数据,此时返回的也是所有设备的实时数据(因此这一步也需要根据第一步获取到的id进行设备信息过滤)。如果你的处理方式是使用Thread.sleep(),设置足够长的时间以保证前一步的信息先处理完整,这样做的结果是导致软件的用户体验非常差,网络好的时候,导致多余的时间白等,网络差的时候导致数据解析不完整。因此可以采用handler处理<p></p><p>主线程中的handler如下设计</p><p></p><pre name="code" class="java">public static Handler myHandler;

myHandler = new Handler() {
			@Override
			public void handleMessage(Message msg) {
				// TODO Auto-generated method stub                                            
				// super.handleMessage(msg);
				if (msg.what == 1) {
					scd.getDivData();         //登陆成功后,则进行当前操作,获取设备信息
				} else if (msg.what == 2) {
					scn.getCurrentData();       //获取设备信息成功,则进行获取实时数据
				} else if (msg.what == 3) {
					Intent intent = new Intent(LoginActivity.this,    //获取实时数据成功,则跳转至数据展示页面
							ChangeActivity.class);
					
					startActivity(intent);
				} else if (msg.what == 11) {
					Toast.makeText(getApplicationContext(), "用户名或密码有误",
							Toast.LENGTH_SHORT).show();
				}

			}
		};
在子线程中,需要在数据接收完成后发送信息通知主线程的handler

如下:

Message message=new Message();
message.what=1;
LoginActivity.myHandler.sendMessage(message);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值