Handler的使用

1.  Handler的使用
1),如果是本类中使用Handler,直接发送消息即可
Message msg = new Message();
msg.what = MessageConstants.WHAT_SOCKET_DISCONNECT;
handler.sendMessage(msg);
2),如果在其他类中使用,需要先获取该类的对象实例和Handler,才能发送
Message msgDE1_BTS = new Message();
msgDE1_BTS.what = Const.MSG_SET_BTS_LAC_REQ_RECONFIG;
WifiWorkerSession.getInstance_DE1().getDev1Handler().sendMessage(msgDE1_BTS);

这是只定义了消息类型,同时也可以定义消息内容:
1): 传递简单类型
例如传递字符串或者数字: 
msg_StopTracer.obj = "stop";  
Handler接收消息后可以直接获取:
//在IMSI/IMEI增加界面选中 tracer后,开始Tracer
if(msg.what == Const.MSG_TRACE_REQ) { //发送开始tracer消息;
if (msg.obj.equals("start")) {
//MSG_TRACE_REQ start
protocolProcessInstance_ID1.send_MSG_TRACE_REQ(0x00, 0x04, 0x25, 0x55, outPut);
return;
} else if (msg.obj.equals("stop")) {
//MSG_TRACE_REQ start
protocolProcessInstance_ID1.send_MSG_TRACE_REQ(0x00, 0x04, 0x25, 0x00, outPut);
return;
}

}
2):传递复杂类型

//发送
final Record tmpRecord = new Record(imsi,powerFinal);
//累计特定次数后求平均值并上报
//将获取的内容组装到消息体中
Message msg1 = new Message();
msg1.obj = tmpRecord; //消息内容
msg1.what = MessageConstants.WHAT_RSSI; //消息类别
AnalysisActivity.getInstance().getHandler().sendMessage(msg1);
//接收并处理
final Record record = (Record) msg.obj;
pCmdData.add(record.getRSSI());

#######################################################################################################################

2. 定义
WifiWorkerSession.java 中
//获取实例
public static WifiWorkerSession getInstance_DE1() {
if (s_WifiWorkerSessionInstance_DE1 == null)
{
s_WifiWorkerSessionInstance_DE1 = new WifiWorkerSession();
}
return s_WifiWorkerSessionInstance_DE1;
}
//获取Handler
public Handler getDev1Handler ()
{
return mHandler;
}
//在主程序中处理第一个socket请求动作z 1
Handler mHandler = new Handler()
{
public void handleMessage(Message msg)
{

super.handleMessage(msg);
System.out.println("***### wifi:DE1接收到的mes.what= " + msg.what);
if(msg.what == 0) { //特殊处理如果状态改变需要修改状态显示
//TextView显示当前socket连接状态
try {
ShowStacketInformation(AnalysisActivity.getInstance().getsocketconnectidisTextView(), flagSocketSta, AnalysisActivity.getInstance().getsocketconnectbut());
}catch (Exception e) {
e.printStackTrace();
}

} else {

//在Target 增加界面选中 tracer后,增加白名单
if(msg.what == MessageConstants.MSG_ADD_ONE_RECORD) { //发送白名单消息

//String strIMSI = AppApplication.data.get(0).getIMSI().trim();
//MSG_ADD_WHITELIST_REQ
String strIMSI = msg.obj.toString();
protocolProcessInstance_ID1.send_MSG_ADD_WHITELIST_REQ(0x00, 0x13, 0xf5, 0x00, strIMSI,outPut);
return;
}
//在Target 增加界面选中 Untracer后,删除一个白名单用户
if(msg.what == MessageConstants.MSG_REMOVE_ONE_RECORD_2) { //发送删除白名单消息
//MSG_DEL_WHITELIST_REQ
String strIMSI = msg.obj.toString();
protocolProcessInstance_ID1.send_MSG_DEL_WHITELIST_REQ(0x00, 0x13, 0xf7, 0x00, strIMSI, outPut);
return;
}
//在IMSI/IMEI增加界面选中 tracer后,开始Tracer
if(msg.what == Const.MSG_TRACE_REQ) { //发送开始tracer消息;
if (msg.obj.equals("start")) {
//MSG_TRACE_REQ start
protocolProcessInstance_ID1.send_MSG_TRACE_REQ(0x00, 0x04, 0x25, 0x55, outPut);
return;
} else if (msg.obj.equals("stop")) {
//MSG_TRACE_REQ start
protocolProcessInstance_ID1.send_MSG_TRACE_REQ(0x00, 0x04, 0x25, 0x00, outPut);
return;
}

}
//在左键长按,选择获取当前配置
if(msg.what == Const.MSG_GET_CURRENTCONFIG) { //发送开始MSG_GET_BTS_LAC_REQ消息;
protocolProcessInstance_ID1.send_MSG_GET_BTS_LAC_REQ(0x00, 0x07, 0x5E, EquipmentId[0], EquipmentId[1], EquipmentId[2], EquipmentId[3], outPut);
return;
}
//接收到MSG_GET_BTS_LAC_ACK
if(msg.what == Const.MSG_GET_BTS_LAC_ACK) { //处理接收到的MSG_GET_BTS_LAC_ACK消息;
MSG_GET_BTS_LAC_ACK_ID1 = receiveDataProcessingArray;
System.out.println("DE1接收到MSG_GET_BTS_LAC_ACK");
MSG_GET_BTS_LAC_ACK_ID1Flag = 1;
messageIfOverFlag_DE1 = true; //设置消息处理完成标志 ,如果是接收消息处理完成都需要设置该标志位
System.out.println("DE1:本次消息处理完成,消息类型:" + msg.what);
return;
}
}
}
}; //END [mHandler]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值