考虑到Android的架构,考虑到Android的意图、视图、活动、内容提供商等方面的操作设计,有人能给我解释一下什么样的“东西”是包裹还是捆绑?Android网站上的解释对我来说听起来有点太逊了,我的意思是这样读“一个特殊的类型安全容器,称为Bundle,可用于异构值的键/值映射。”我对Bundles一无所知,对我来说,它们可以是XML文件、散列映射和其他所有“键/值映射”的变体。
什么是Parcelable或Bundle,它们的设计和功能是什么?
谢谢。
发布于 2012-08-01 09:30:06
Parcelable和Bundle是您想要与意图一起发送的信息包!
Bundle:如果您想启动新的activity,您可以将信息的Bundle连同您创建的new Intent一起发送到activity:
// Bundle b is sent with new intent i
Bundle b = new Bundle();
b.putString(key, value);
b.putInt(key, value);
Intent i = new Intent(...);
i.putExtras(b);
startActivity(i);
// In the activity which started from the intent i, you can get the bundle b
this.getIntent().getExtras();Parcelable是一个interface,如果你想用bundle或intent来传递一个object (你自己的类),你应该实现这个interface
class Example implements Parcelable{
// some information here
}
// You can send with intent or bundle:
b.putParcelable(key, value);
i.putExtra(name, value);更多谷歌安卓系统详情请点击此处:Bundle Parcelable
发布于 2012-08-01 11:43:13
Android定义了一种新的轻量级IPC (进程间通信)数据结构,称为Parcel,您可以在其中以字节流的形式扁平化对象,这与J2SDK的序列化概念相同。
Android Parcel的简短定义是用于轻量级、高性能进程间通信(IPC)的消息容器。在Android上,“进程”是一个标准的Linux进程,一个进程通常不能访问另一个进程的内存,所以Android系统使用Parcels将对象分解成可以跨进程边界进行编组/解组的基元。
但是,也可以在同一进程中使用包,以便在同一应用程序的不同组件之间传递数据。例如,一个典型的Android应用程序有几个屏幕,称为“活动”,需要将数据或动作从一个活动传递到下一个活动。要编写一个可以传递的对象,我们可以实现Parcelable接口。Android本身提供了一个内置的Parcelable对象,称为Intent,用于将信息从一个组件传递到另一个组件
Bundle是android在android组件之间传递信息的方式。正如你所说,它是一个字典,我们可以在其中放置键值对。任何可以放在捆绑中的东西都应该是原始的或包裹的。
发布于 2012-08-01 09:24:28
Bundle实现了Parcelable。捆绑包实例用于存储名称/值对,其中名称是字符串,值是实现Parcelable的类。实现Parcelable的类可以转换为Parcel,后者可以在IBinder上序列化。
最常见的用法是在活动和服务之间传递值(意图附加)
https://stackoverflow.com/questions/11751214
复制相似问题