Android Intent对象传递:Serializable与Parcelable实例详解
25 浏览量
更新于2024-08-31
收藏 56KB PDF 举报
在Android开发中,Intent是Android四大组件之一,用于在应用程序内部或不同应用之间传递数据。本文将详细介绍如何通过Intent传递对象,重点讲解两种主要方式:通过Bundle实现Serializable接口和通过Bundle实现Parcelable接口。
首先,我们来理解Serializable和Parcelable的区别。Serializable是Java中的序列化接口,当对象需要跨进程或存储时,需要实现Serializable接口,Android系统会自动生成序列化和反序列化的机制来处理这些对象。而Parcelable接口则是一个更轻量级的选择,它由Android系统直接支持,性能更好,且适用于Android的IPC(进程间通信)场景。
在我们的示例项目"ObjectTestDemo"中,开发者创建了一个简单的布局文件,包含两个按钮,分别对应于"Serializable"和"Parcelable"两种传递方式:
1. Serializable传递:
点击"Serializable"按钮后,通常我们会将一个实现了Serializable接口的对象放入Bundle中。例如,假设有一个名为Person的类,我们首先需要确保它实现了Serializable接口:
```java
public class Person implements Serializable {
// 类属性和方法...
}
```
在Activity中,我们可以通过以下方式将Person对象放入Intent并启动另一个Activity:
```java
Intent intent = new Intent(this, NextActivity.class);
Person person = new Person();
Bundle bundle = new Bundle();
bundle.putSerializable("personKey", person);
intent.putExtras(bundle);
startActivity(intent);
```
接收端在NextActivity中通过`getSerializableExtra()`方法获取这个对象:
```java
Person receivedPerson = (Person) getIntent().getSerializableExtra("personKey");
```
2. Parcelable传递:
对于Parcelable接口,我们同样创建一个Person类,但在类声明上添加`@.Parcelable`注解,并实现`writeToParcel()`和`describeContents()`方法。例如:
```java
@.Parcelable
public class Person implements Parcelable {
// 类属性和方法...
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
// 实现写入Parcel的方法
}
}
```
将Person对象放入Intent的方式类似,但使用的是`putParcelableExtra()`:
```java
intent.putExtra("personKey", person);
```
在接收端,使用`getParcelableExtra()`获取并解析对象:
```java
Person receivedPerson = (Person) getIntent().getParcelableExtra("personKey");
```
总结来说,选择哪种方式取决于具体需求。如果对性能有较高要求或者需要跨进程通信,通常推荐使用Parcelable;而对于简单的序列化场景,Serializable是一个不错的选择。通过理解和实践这两种方式,开发者可以更灵活地在Android应用中传递对象数据。
221 浏览量
点击了解资源详情
328 浏览量
434 浏览量
1879 浏览量
142 浏览量
280 浏览量
105 浏览量
2021-12-10 上传
weixin_38531788
- 粉丝: 4
- 资源: 912