Android中Bundle

作者: 行者_zm | 来源:发表于2019-01-08 08:18 被阅读15次

    Bundle主要用于传递数据;它保存的数据,是以key-value(键值对)的形式存在的。

    Bundle经常使用在Activity之间或者线程间传递数据,传递的数据可以是boolean、byte、int、long、float、double、string等基本类型或它们对应的数组,也可以是对象或对象数组。
    当Bundle传递的是对象或对象数组时,必须实现Serializable或Parcelable接口。
    Bundle提供了各种常用类型的putXxx()/getXxx()方法,用于读写基本类型的数据。(各种方法可以查看API)

    在activity间传递信息

    Bundle bundle = new Bundle();        //得到bundle对象  
    bundle.putString("sff", "value值");  //key-"sff",通过key得到value-"value值"(String型)  
    bundle.putInt("iff", 175);           //key-"iff",value-175  
    intent.putExtras(bundle);            //通过intent将bundle传到另个Activity  
    startActivity(intent);
    
    读取数据
    Bundle bundle = this.getIntent().getExtras(); //读取intent的数据给bundle对象     
    String str1 = bundle.getString("sff"); //通过key得到value     
    int int1 = bundle.getInt("iff"); 
    
    线程间传递

    通过Handler将带有dundle数据的message放入消息队列,其他线程就可以从队列中得到数据

    Message message=new Message();//new一个Message对象     
    message.what = MESSAGE_WHAT_2;//给消息做标记  
    Bundle bundle = new Bundle(); //得到Bundle对象    
    bundle.putString("text1","消息传递参数!");  //往Bundle中存放数据    
    bundle.putInt("text2",44);  //往Bundle中put数据    
    message.setData(bundle);//mes利用Bundle传递数据  
    mHandler.sendMessage(message);//Handler将消息放入消息队列
    
    
    读取数据

    这里用的是Handler的handleMessage(Message msg)方法处理数据

    String str1=msg.getData().getString("text1");  
    int int1=msg.getData().getString("text2");
    
    Bundle和Intent区别

    Bundle只是一个信息的载体,内部其实就是维护了一个Map<String,Object>。

    Intent负责Activity之间的交互,内部是持有一个Bundle的。

    相关文章

      网友评论

        本文标题:Android中Bundle

        本文链接:https://www.haomeiwen.com/subject/pihhrqtx.html