📌  相关文章
📜  在android中传递数据的方式有多少种 (1)

📅  最后修改于: 2023-12-03 14:51:14.309000             🧑  作者: Mango

在 Android 中,有多种方式可以在不同组件之间传递数据。以下是一些常见的方式:

  1. Intent:Intent 是 Android 中用于在不同组件之间传递数据的基本机制。可以通过 putExtra() 方法将数据放入 Intent,并通过 startActivity() 或 startActivityForResult() 启动另一个 Activity,并在目标组件中通过 getIntent().getXXXExtra() 方法获取数据。这是最常用的数据传递方式。

示例代码:

// 发送数据
Intent intent = new Intent(this, TargetActivity.class);
intent.putExtra("key", "value");
startActivity(intent);

// 接收数据
String data = getIntent().getStringExtra("key");
  1. Bundle:Bundle 是一种用于封装数据的容器,适用于在不同组件之间传递较多的数据。可以通过 putXXX() 方法将数据放入 Bundle,并将 Bundle 作为参数传递给目标组件。

示例代码:

// 发送数据
Intent intent = new Intent(this, TargetActivity.class);
Bundle bundle = new Bundle();
bundle.putString("key", "value");
intent.putExtras(bundle);
startActivity(intent);

// 接收数据
Bundle bundle = getIntent().getExtras();
String data = bundle.getString("key");
  1. Parcelable:Parcelable 是 Android 中用于序列化对象的接口,适用于需要传递自定义对象的情况。通过实现 Parcelable 接口,并将对象放入 Intent 或 Bundle 中,可以在不同组件之间传递自定义对象。

示例代码:

// 实现 Parcelable 接口
public class MyObject implements Parcelable {
    // ...

    // 内容省略

    // 实现 Parcelable 方法
    @Override
    public void writeToParcel(Parcel dest, int flags) {
        // 写入数据
        dest.writeString(this.name);
        // ...
    }

    public static final Parcelable.Creator<MyObject> CREATOR = new Parcelable.Creator<MyObject>() {
        @Override
        public MyObject createFromParcel(Parcel source) {
            // 读取数据
            return new MyObject(source.readString(), ...);
        }

        @Override
        public MyObject[] newArray(int size) {
            return new MyObject[size];
        }
    };
}

// 发送数据
Intent intent = new Intent(this, TargetActivity.class);
MyObject myObject = new MyObject("name", ...);
intent.putExtra("key", myObject);
startActivity(intent);

// 接收数据
MyObject myObject = getIntent().getParcelableExtra("key");
  1. 序列化:与 Parcelable 类似,可以通过实现 Serializable 接口来序列化对象,并在 Intent 或 Bundle 中传递。Serializable 相对于 Parcelable 来说,更容易实现,但性能较差,不推荐使用。

示例代码:

// 实现 Serializable 接口
public class MyObject implements Serializable {
    // ...

    // 内容省略
}

// 发送数据
Intent intent = new Intent(this, TargetActivity.class);
MyObject myObject = new MyObject("name", ...);
intent.putExtra("key", myObject);
startActivity(intent);

// 接收数据
MyObject myObject = (MyObject) getIntent().getSerializableExtra("key");

以上是常见的几种在 Android 中传递数据的方式,根据具体的需求可以选择合适的方式来实现。