Discuz! BBS

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 192|回复: 0

详解Bundle

[复制链接]

347

主题

501

帖子

3066

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3066
发表于 2025-8-27 20:49:57 | 显示全部楼层 |阅读模式
1. Bundle 基本概念
Bundle 是 Android 中用于存储和传递数据的容器类,它以键值对的形式存储数据,类似于 HashMap,但专门用于 Android 组件之间的数据传递
  1. // Bundle 的基本使用示例
  2. Bundle bundle = new Bundle();
  3. bundle.putString("key", "value");
  4. bundle.putInt("number", 123);
复制代码
2. 在 onCreate 方法中的作用
在 MainActivity 的 onCreate 方法中,Bundle savedInstanceState 参数用于恢复 Activity 的状态:
当 Activity 首次创建时,该参数为 null
当 Activity 被系统销毁后重新创建时,该参数包含之前保存的状态信息

  1. public void onCreate(Bundle savedInstanceState) {
  2.     super.onCreate(savedInstanceState);
  3.     // savedInstanceState 包含了 Activity 销毁前保存的状态
  4.     // 可以从中恢复数据
  5. }
复制代码
3. 状态保存与恢复机制
Android 系统使用 Bundle 实现 Activity 的状态保存与恢复:

  1. // 保存状态
  2. @Override
  3. protected void onSaveInstanceState(Bundle outState) {
  4.     super.onSaveInstanceState(outState);
  5.     outState.putString("data_key", "data_value");
  6. }

  7. // 恢复状态
  8. @Override
  9. protected void onCreate(Bundle savedInstanceState) {
  10.     super.onCreate(savedInstanceState);
  11.     if (savedInstanceState != null) {
  12.         String data = savedInstanceState.getString("data_key");
  13.     }
  14. }
复制代码
4. Bundle 支持的数据类型
Bundle 支持多种数据类型,包括基本数据类型、数组、实现了 Parcelable 或 Serializable 接口的对象等:
基本类型:int, float, boolean, String 等
数组类型:int[], String[] 等
对象类型:必须实现 Parcelable 或 Serializable
5. 在 Intent 传递中的应用
Bundle 也常用于在 Activity 之间传递数据:

  1. Intent intent = new Intent(this, AnotherActivity.class);
  2. Bundle bundle = new Bundle();
  3. bundle.putString("message", "Hello");
  4. intent.putExtras(bundle);
  5. startActivity(intent);
复制代码
在目标 Activity 中获取数据:
  1. Bundle bundle = getIntent().getExtras();
  2. if (bundle != null) {
  3.     String message = bundle.getString("message");
  4. }
复制代码
总结来说,Bundle 是 Android 中用于存储和传递轻量级数据的重要工具,特别是在 Activity 生命周期管理、组件间通信等场景中发挥着关键作用。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|DiscuzX

GMT+8, 2025-9-17 20:59 , Processed in 0.012260 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表