Android Intent对象传递:Serializable与Parcelable实战

0 下载量 139 浏览量 更新于2024-08-29 收藏 76KB PDF 举报
"这篇文章主要介绍了在Android开发中如何利用Intent在不同的Activity之间传递对象,具体包括两种方式:使用Serializable接口和使用Parcelable接口。这两种方法都是通过Intent的Bundle附加数据来实现对象的传递。" 在Android应用程序开发中,Activity之间的通信是常见的需求,而Intent是Android系统用于组件间通信的主要工具。当需要在两个Activity之间传递复杂的数据,如自定义对象时,可以通过实现Serializable或Parcelable接口来实现。下面是这两种方法的详细说明: 1. Serializable接口: - 使用方法:当自定义对象实现了Serializable接口后,可以将其作为一个Serializable对象放入Intent的Bundle中。代码示例如下: ```java Intent intent = new Intent(this, TargetActivity.class); MyObject myObject = new MyObject(); Bundle bundle = new Bundle(); bundle.putSerializable("key", myObject); intent.putExtra("bundleKey", bundle); startActivity(intent); ``` - 优点:实现简单,只需要让对象实现Serializable接口,系统会自动处理序列化和反序列化的过程。 - 缺点:序列化和反序列化过程相对较慢,占用的内存和存储空间也较大,不适合频繁或大量数据的传递。 2. Parcelable接口: - 使用方法:自定义对象实现Parcelable接口,需要重写`writeToParcel()`和` CREATOR`等方法。然后将对象放入Intent的Bundle中。代码示例如下: ```java Intent intent = new Intent(this, TargetActivity.class); MyParcelable myParcelable = new MyParcelable(); Bundle bundle = new Bundle(); bundle.putParcelable("key", myParcelable); intent.putExtra("bundleKey", bundle); startActivity(intent); ``` - 优点:Parcelable接口的序列化和反序列化效率比Serializable高,适合传递大数据量或性能敏感的场景。 - 缺点:实现过程相对复杂,需要手动编写序列化和反序列化的代码。 在实际开发中,如果对性能有较高要求,推荐使用Parcelable接口。但如果是简单的对象传递,或者为了简化编码工作,可以选择Serializable接口。 总结来说,Android中Activity间的对象传递是通过Intent配合Serializable或Parcelable接口来完成的。选择哪种方式取决于数据量、性能需求以及开发者对代码复杂性的接受程度。在理解这两种方式的工作原理后,开发者可以根据具体项目需求灵活选择。