Android中Bundle

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的。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 【Android Handler 消息机制】 前言 在Android开发中,我们都知道不能在主线程中执行耗时的任务...
    Rtia阅读 10,390评论 1 28
  • 0.Android手机操作系统的四层架构? Applications , Application Framewor...
    lucas777阅读 12,414评论 0 16
  • 本文出自 Eddy Wiki ,转载请注明出处:http://eddy.wiki/interview-androi...
    eddy_wiki阅读 8,549评论 0 20
  • 今天周一《通往财富自由之路》更新了,里面有些思考题,今天就在这里回答下了。 1.特立独行且正确和自以为是的区别是什...
    闻舒阅读 1,495评论 0 0
  • 30多岁其实是个很痛苦的年纪。你已进入传统观念里面的而立之年,但想法依然幼稚的可怜。 30多岁的时候已经工作了几年...
    清风徐阅读 2,394评论 0 1

友情链接更多精彩内容