Bundle(使用Bundle传递数据)

在Android开发中,Bundle是一种用于存储键值对形式数据的容器类。它主要用于在ActivityFragmentService等组件间传递少量的、简单的数据。Bundle对象可以直接附加到Intent上,也可以作为onSaveInstanceState()方法的参数来保存组件状态,以便在配置变更或进程被系统回收后恢复状态。以下是Bundle的主要特性和使用方法:

主要特点

  1. 键值对存储Bundle内部以键值对的形式存储数据,键为String类型,值可以是基本数据类型、StringCharSequenceParcelable对象、Serializable对象等。

  2. 轻量级:相对于其他数据结构(如JSON、数据库记录等),Bundle更为轻量,适合在短时间内快速传递和恢复数据。

  3. Intent紧密配合:可以直接将Bundle对象通过Intent.putExtra(Bundle)方法附加到Intent上,便于在组件间传递数据。

  4. 支持持久化:在ActivityFragment生命周期管理中,Bundle常用于在onSaveInstanceState()方法中保存当前状态数据,然后在onCreate(Bundle)onCreateView(Bundle)等回调中恢复这些数据。

使用方法

创建和添加数据

// 创建 Bundle 对象
Bundle bundle = new Bundle();

// 添加基本类型数据
bundle.putInt("key_integer", 123);
bundle.putString("key_string", "Hello, Bundle!");

// 添加复杂类型数据(如 Parcelable 对象)
MyParcelableObject myParcelable = new MyParcelableObject();
bundle.putParcelable("key_parcelable", myParcelable);

// 添加 Serializable 对象
MySerializableObject mySerializable = new MySerializableObject();
bundle.putSerializable("key_serializable", mySerializable);

从 Bundle 中读取数据

// 获取 Bundle 对象,例如从 Intent 或 onSaveInstanceState() 回调中
Bundle bundle = getIntent().getExtras();

// 读取基本类型数据
int intValue = bundle.getInt("key_integer", defaultValue);
String stringValue = bundle.getString("key_string", defaultValue);

// 读取 Parcelable 对象
MyParcelableObject parcelableObject = bundle.getParcelable("key_parcelable");

// 读取 Serializable 对象
MySerializableObject serializableObject = (MySerializableObject) bundle.getSerializable("key_serializable");

注意:对于默认值(defaultValue),请根据实际数据类型为其指定合适的值。

将 Bundle 附加到 Intent

// 已有 Bundle 对象
Bundle bundle = ...;

// 创建 Intent
Intent intent = new Intent(this, TargetActivity.class);

// 将 Bundle 附加到 Intent
intent.putExtra("bundle_key", bundle);

// 启动目标 Activity,并传递 Bundle 数据
startActivity(intent);

在目标 Activity 中,通过 getIntent().getBundleExtra("bundle_key") 获取传递过来的 Bundle 对象:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_target);

    // 从 Intent 中获取 Bundle
    Bundle bundle = getIntent().getBundleExtra("bundle_key");

    // 从 Bundle 中读取数据
    // ...
}

总结Bundle在Android开发中作为轻量级的数据容器,主要用于组件间的数据传递和状态保存。通过使用putXXX()getXXX()方法,可以方便地将基本类型、StringCharSequenceParcelable对象、Serializable对象等数据存入和取出Bundle。结合Intent的使用,能够在ActivityFragmentService等组件间高效地传递数据。

原文链接 https://www.hanyuanhun.cn | https://node.hanyuanhun.cn

posted @   汉源魂  阅读(29)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示