Android-Bundle认知,和Intent的区别

 我来答
百度网友ded4135
高粉答主

2016-12-27 · 醉心答题,欢迎关注
知道大有可为答主
回答量:2.7万
采纳率:87%
帮助的人:1.2亿
展开全部

一、Bundle: A mapping from String values to various Parcelable types


键值对的集合


类继承关系:


java.lang.Object 

android.os.Bundle 

Bundle类是一个final类: 

public final class Bundle extends Objectimplements Parcelable Cloneable


作用:可以用作是两个Activity间的通讯。


用法:


①、装载数据:


Bundle mBundle =  new  Bundle();   


mBundle.putString( "DataTag" ,  "要传过去的数据" );  


Intent intent = new Intent();  

intent.setClass(MainActivity.this, Destion.class);   

intent.putExtras(mBundle);


②、目标Activity解析数据


Bundle bundle = getIntent().getExtras(); //得到传过来的bundle


String data = bundle.getString( "DataTag" ); //读出数据


二、Intent的含义和作用 就略了。。。直接上二者比较:



两个Activity之间传递数据,数据的附加有两种方式:


一种是直接 intent.putxx();


另一种是  先bundle.putxx(), 然后再调用public Intent putExtras (Bundle extras)  添加bundle.


其实两种的本质是一样的。


先看Intent的方法:


public Intent putExtra(String name, boolean value) {


if (mExtras == null) { 


mExtras = new Bundle(); 



mExtras.putBoolean(name, value); 


return this; 



其中mExtras是intent内部定义的一个private Bundle变量。


可以看到,intent其实是调用了bundle相应的put函数,也就是说,intent内部还是用bundle来实现数据传递的,只是封装了一层而已。


而使用Bundle传值的话最后调用的方法:Intent.putExtras(Bundle extras):


public Intent putExtras(Bundle extras) {


if (mExtras == null) { 


mExtras = new Bundle(); 



mExtras.putAll(extras); 


return this; 



可以看到,其实是把之前那个bundle中的数据批量添加到intent内部的bundle中。


其实是和上面的直接用Intent传键值对是一样的原理。


总之呢,Intent旨在数据传递,bundle旨在存取数据,当然intent也提供一部分数据的存取,但比起bundle就显得不专业,不灵活的多


Storm代理
2023-07-25 广告
StormProxies是一家可靠的代理服务提供商,提供原生IP(住宅原生IP)和高匿名代理服务。以下是关于StormProxies的原生IP服务的一些信息:1. 住宅原生IP:StormProxies提供的住宅原生IP是指从真实的家庭或企... 点击进入详情页
本回答由Storm代理提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式