使用 Intent 传递数据
优点:
- 标准方式:Intent 是 Android 提供的标准方法,用于在不同的组件之间传递数据。
- 支持多种数据类型:可以传递基本数据类型、String、Parcelable、Serializable 等。
- 明确性:Intent 用于启动新 Activity 或服务,数据传递是这个流程的一部分。
- 避免内存泄漏:数据通过 Intent 传递,Activity 的生命周期是独立的,减少了因静态引用而导致的内存泄漏风险。
缺点:
- 有限的数据量:Intent 中的数据量应该适中。对于非常大的数据,使用 Intent 可能会导致性能问题。
- 数据类型限制:虽然 Intent 支持多种数据类型,但复杂对象需要实现 Parcelable 或 Serializable 接口,可能会增加实现复杂度。
示例代码:
// 在第一个 Activity 中
Intent intent = new Intent(CurrentActivity.this, NextActivity.class);
intent.putExtra("key", "value");
startActivity(intent);
// 在第二个 Activity 中
String value = getIntent().getStringExtra("key");
使用静态类传递数据
优点:
- 数据共享:可以在应用的多个组件之间共享数据,适用于全局数据存储。
- 灵活性:可以使用静态类来存储任何类型的数据,甚至是复杂的数据结构。
缺点:
- 内存泄漏风险:使用静态类可能导致内存泄漏,因为静态引用会持有对象的引用,而这些对象可能不会被及时垃圾回收。
- 线程安全问题:如果多个线程访问同一个静态类的数据,可能需要额外的同步机制来保证线程安全。
- 生命周期管理:静态类中的数据不会随 Activity 生命周期的变化自动释放,可能导致数据不一致或内存浪费。
示例代码:
// 静态类定义
public class DataHolder {
public static String data;
}
// 在第一个 Activity 中
DataHolder.data = "value";
Intent intent = new Intent(CurrentActivity.this, NextActivity.class);
startActivity(intent);
// 在第二个 Activity 中
String value = DataHolder.data;