1 Bundle介绍

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

我们经常使用Bundle在Activity之间传递数据,传递的数据可以是boolean、byte、int、long、float、double、string等基本类型或它们对应的数组,也可以是对象或对象数组。当Bundle传递的是对象或对象数组时,必须实现Serializable 或Parcelable接口。下面分别介绍Activity之间如何传递基本类型、传递对象。

2 传递基本类型

Bundle提供了各种常用类型的putXxx()/getXxx()方法,用于读写基本类型的数据。

  • 在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");
PS:Bundle和Intent区别:

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

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

Android_Bundle的更多相关文章

  1. meteor 安装 android sdk慢的改进方法

    网上方法很多,最后总结一下比较靠谱的一个,到~/.meteor/android_bundle/ 目录下, 执行tools/android,手动下载 API 19 和 intel X86 Atom Sy ...

随机推荐

  1. linux下mysql数据库操作命令

    1:启动服务 service mysqld start (5.0版本是mysqld) service mysql start (5.5.7版本是mysql) 2:停止服务 service mysqld ...

  2. Hyperion: Building the Largest In memory Search Tree

    Introduction 索引在数据管理中起到很重要的作用,很多索引结构都会采用访问速度快而且内存消耗少的trie树,但一般常见的trie树索引结构都强调效率而忽视内存的效率,他们的效率虽然高,但内存 ...

  3. .net core 3.0 Signalr - 07 业务实现-服务端 自定义管理组、用户、连接

    Hub的管理 重写OnConnectedAsync 从连接信息中获取UserId.Groups,ConnectId,并实现这三者的关系,存放于redis中 代码请查看 using CTS.Signal ...

  4. jquery 全选,反选

    <?php foreach ($contents as $item) { ?> <tr> <td><input name="qx" val ...

  5. python pytesseract——3步识别验证码的识别入门

    验证码识别是个大工程,但入门开始只要3步.需要用到的库PIL.pytesserac,没有的话pip安装.还有一个是tesseract-ocr 下载地址:https://sourceforge.net/ ...

  6. 集合线性表--List之LinkedList(队列与栈)

    队列和栈1. Queue 队列(Queue)是常用的数据结构,可以将队列看成特殊的线性表,队列限制了对线性表的访问方式:只能从线性表的一端添加(offer)元素,从另一端取出(poll)元素.队列遵循 ...

  7. 由std::once_call 引发的单例模式的再次总结,基于C++11

    一个偶然的机会,知道了std::once_call这个东西. 了解了下,std::once_call支持多线程情况下的某函数只执行一次.咦,这个不是恰好符合单例模式的多线程安全的困境吗? 单例模式,经 ...

  8. session,cookie,sessionStorage,localStorage的相关设置以及获取删除

    一.cookie 什么是 Cookie? "cookie 是存储于访问者的计算机中的变量.每当同一台计算机通过浏览器请求某个页面时,就会发送这个 cookie.你可以使用 JavaScrip ...

  9. 利用golang优雅的实现单实例

    平时编写代码过程中,经常会遇到对于全局角度只需运行一次的代码,比如全局初始化操作,设计模式中的单例模式.针对单例模式,java中又出现了饿汉模式.懒汉模式,再配合synchronized同步关键字来实 ...

  10. 第二章Java内存区域与内存溢出异常

    第二章 Java内存区域与内存溢出异常 一.概述 对与Java程序员来说,在虚拟机自动内存管理机制的帮助下,不再需要为每个new操作去写delete/free代码,不容易出现内存泄露和内存溢出问 题, ...