在Message中绑定Bundle数据

一、Bundle数据

 1.建立
  Bundle B= new Bundle();
 2.放入数据
  B.put各种数据类型(标签,数据值)
  例:
   放入String数据
   B.putString("BtRxData",BlutoothRxData)
   放入char[]数据
   B.putCharArray("BtRxData",BlutoothRxData[])

 3.提取数据
  不动脑子的办法就是
  (要转化的类型)B.get(标签)
  例:
   String str = (String) b.get("BtRxData");

二、Message数据

 1.建立
  Message msg = new Message();
 2.Message有很多参量可用
  msg.what;msg.arg1;msg.arg2等等,如果只是传送简单数据,用这些就够了
 3.放入Bundle数据(好像只能放入一个Bundle数据)
  msg.setData(B);
 4.发送Message数据(在Thread中发送
  例:
   向ThreadHandler发送Message:
   ThreadHandler.sendMessage(msg);
 5.收取Message数据
  在建立的Handler里用
  public void handleMessage(Message msg) {}
  方法(函数)来接受处理Message
 6.从Message中提取Bundle数据
  msg.getData();
  例:
   Bundle B=msg.getData();
 7.以下范例只简单演示了“Bundle数据通过Message方式传送”,并不包含Message内各参量(what,arg1等)的处理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
//---------- 范例----------------    
public class CzBluetoothLibrary {
//--------Handler 区
Handler Handler_ThreadMessageProcess = new Handler() {
public void handleMessage(Message Msg) {//此入口处理Msg
//从Msg里提取Bundle数据
Bundle B=Msg.getData();
//从Bundle数据中提取带"BtRxData"标志的数据
//并转换成String赋给str
String str = (String) B.get("BtRxData");
//在主界面tv_ProgramStatus框里显示str
CzHomeControl.tv_ProgramStatus.append(str);
}
}

//----------Thread 区
class Thread_BluetoothConnect1 extends Thread {
public void run() {
Bundle B =new Bundle();
String str="TestString";
B.putString("BtRxData",str);

Message msg = new Message();
Msg.setData(B);
Handler_ThreadMessageProcess.sendMessage(Msg);
}
}