关于Message及Bundle数据

来源:互联网 发布:超极本推荐2017知乎 编辑:程序博客网 时间:2024/05/18 20:06

一、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等)的处理
//---------- 范例----------------    
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);
    }
}

0 0
原创粉丝点击