在android中经常要使用到进程间通信传输数据,基本都是使用Intent指向须跳转的页面。
传送数据的无外乎有bundle,或者直接在intent里putextra(key,value);
基本类型可以直接传递,但需要传输对象的时候就不支持了。
这时需要我们将对象序列化,这边先试下parcel的。只要将对象实现parcelable接口,
重写几个方法即可。
如下:
package com.nico;
import android.os.Parcel;
import android.os.Parcelable;
public class Person implements Parcelable {
public Person() {
}
String name = "";
String country = "";
public Person(Parcel source) {
//属性
this.name = source.readString();
this.country = source.readString();
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel arg0, int arg1) {
//写入属性 ,源activity中序列化好对象
arg0.writeString(this.name);
arg0.writeString(this.country);
}
//进程间通信必须要使用该属性
public final static Parcelable.Creator<Person> CREATOR = new Parcelable.Creator<Person>() {
@Override
public Person createFromParcel(Parcel source) {
//在新的context中返回序列化好的对象
return new Person(source);
}
@Override
public Person[] newArray(int size) {
return new Person[size];
}
};
}
传递list或者map时,主要集合中的对象都是序列化好的,皆可传递。
分享到:
相关推荐
在Android开发中,数据的序列化是一个非常重要的概念,它涉及到数据的持久化存储和跨进程通信(IPC)。本文将深入探讨两种主要的序列化方式:Serializable和Parcelable,并比较它们的优缺点以及适用场景。 首先,...
在Android中,Parcelable是数据序列化的高级接口,它比Serializable效率更高。如果要在AIDL中传递自定义对象,这些对象必须实现Parcelable接口。实现Parcelable接口通常包括以下步骤: 1. 创建一个内部静态类`...
本示例“android进程间通信测试代码”主要探讨了一种非AIDL(Android Interface Definition Language)方式来实现进程间通信,即通过序列化对象Parcel进行数据传递。 一、Android进程间通信基础 Android系统为了...
以下是使用AIDL实现进程间通信的步骤: 1. **创建AIDL文件**:在Android项目中,创建一个新的aidl文件(例如,`IAidlInterface.aidl`),并定义接口及其方法。例如: ```aidl package com.example.aidlexample; ...
本教程将深入探讨如何使用AIDL进行进程间通信,并重点讲解如何传递Parcelable数据。 首先,让我们了解AIDL的基本概念。AIDL文件是一种特殊的文本文件,使用类似于Java的方法声明来定义服务接口。当编译项目时,...
在Android系统中,进程间通信(Inter-Process Communication, 简称IPC)是一种关键机制,使得不同应用程序或同一程序的不同进程之间能够共享数据、调用服务等。本示例"android 进程间通信demo"专注于讲解如何利用...
**进程间通信(IPC,Inter-Process Communication)是Android系统中一种重要的机制,它使得不同应用程序的进程可以相互通信,共享数据。AIDL(Android Interface Definition Language)是Android提供的一种用于实现...
总结,AIDL和Parcelable的结合使用,为Android的进程间通信提供了强大的支持,使得开发者可以轻松地在不同的应用程序或服务之间交换自定义对象,极大地提升了应用的灵活性和扩展性。理解并掌握这一技术,对于Android...
虽然Aidl提供了强大的进程间通信能力,但它相比本地方法调用有一定的性能开销,因为涉及到数据的序列化和跨进程通信。此外,Aidl不支持所有Java数据类型,如自定义对象,需要额外实现Parcelable接口。 **8. 其他IPC...
而Parcelable是Android平台提供的一种高效的数据序列化机制,相比Java内置的Serializable接口,它在性能上更优,更适合在进程间传递数据或者保存数据到内存中。本篇文章将详细解释Android序列化过程中的Parcelable...
总结来说,通过实现Parcelable接口,开发者可以高效地在Android进程间传递复杂的数据对象,这在服务通信、广播接收器或者任何需要跨进程数据交换的场景中都是非常有用的。然而,这种高效性是以编写额外的序列化和反...
在Android系统中,进程间通信(IPC,Inter-Process Communication)是实现不同应用程序之间数据交换的关键技术。AIDL(Android Interface Definition Language)是Android提供的一种强大的工具,它使得跨进程调用...
2. 进程间通信(IPC):在Android中,Intent是用于组件间通信的主要手段,但Intent默认只支持基本数据类型和Parcelable接口的实现类的传递。通过序列化,我们可以将复杂的对象转换成可以放入Intent的数据,从而实现...
- **进程间通信**:在Android中,不同Activity之间传递复杂对象时,需要先序列化再反序列化。 - **对象生命周期扩展**:序列化允许保存对象的状态,以便在JVM关闭后重新加载。 - **仅序列化变量,不序列化方法**...
了解AIDL的工作原理和使用方法,有助于我们在实际项目中更得心应手地实现进程间通信。 参考链接: - [Android进程间通信(IPC)——AIDL详解](http://www.cnblogs.com/nanguabing/archive/2012/12/12/2815392.html)...
**Android进程间通信(IPC):AIDL详解** 在Android系统中,进程间通信(IPC,Inter-Process Communication)是应用程序之间数据交换的关键技术。AIDL(Android Interface Definition Language)是Android提供的一...
在Android系统中,AIDL...总结,AIDL是Android中实现进程间通信的重要工具,通过定义接口和使用Binder机制,让不同进程的应用能够相互协作。理解和熟练运用AIDL能帮助开发者构建更高效、稳定且功能丰富的Android应用。
若需传递复杂对象,需实现Parcelable接口,以便对象能够在不同进程中序列化和反序列化。 七、使用RemoteViews和Notification RemoteViews允许在通知中显示一个远程视图,这对于跨进程展示自定义布局非常有用。配合...