最简单的,主要是实现Parcelable的接口,重写那个CREATOR
测试用的接收信息Activity
package com.nico;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Parcelable;
public class Test extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Intent i = getIntent();
Person p = i.getParcelableExtra("yes");
System.out.println("---->"+p.name);
System.out.println("---->"+p.map.size());
}
}
发送的Activity
package com.nico;
import java.util.HashMap;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
public class TestNew extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Intent intent = new Intent();
Person p = new Person();
p.map = new HashMap<String,String>();
p.map.put("yes", "ido");
p.name="ok";
intent.putExtra("yes", p);
intent.setClass(this, Test.class);
startActivity(intent);
}
}
Parcelable的实现类
package com.nico;
import java.util.HashMap;
import android.os.Parcel;
import android.os.Parcelable;
public class Person implements Parcelable {
public HashMap<String,String> map = new HashMap<String,String> ();
public String name ;
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeMap(map);
dest.writeString(name);
}
public static final Parcelable.Creator<Person> CREATOR = new Parcelable.Creator<Person>() {
@Override
public Person createFromParcel(Parcel source) {
Person p = new Person();
p.map=source.readHashMap(HashMap.class.getClassLoader());
p.name=source.readString();
return p;
}
@Override
public Person[] newArray(int size) {
// TODO Auto-generated method stub
return null;
}
};
}
分享到:
相关推荐
此外,由于Parcelable接口通常比Serializable更高效,如果你需要在大量数据传递时优化性能,可以考虑自定义一个Parcelable实现的Map子类,比如`OrderedMapParcelable`,并实现`writeToParcel()`和`readFromParcel()`...
下面是一个简单的Parcelable实现示例: ```java public class Person implements Parcelable { public String name; public HashMap, String> map; public Person() {} protected Person(Parcel in) { name ...
接口定义类似于Java接口,但支持更有限的数据类型,如基本数据类型、List、Map和自定义的Parcelable对象。 例如: ```java package com.example.myapp; interface IMyService { void sendMessage(int msgId, ...
由于AIDL基于Binder机制,所以它支持基本数据类型、数组、List、Map以及实现了Parcelable接口的对象。在AidlDemo中,`sendString`方法展示了如何传递字符串,而`returnInt`则展示了返回整型数据的用法。 ### 7. ...
例如,对于一个Parcelable对象列表: ```java List<MyObject> list = new ArrayList(); // 添加对象到list intent.putParcelableArrayListExtra("key", list); ``` 接收端: ```java List<MyObject> receivedList ...
本资源“Android应用源码之aidl跨进程调用”是一个针对Android应用的毕业设计示例,旨在帮助开发者深入理解并实践这一关键功能。下面将详细介绍Android中的aidl(Android Interface Definition Language)及其在跨...
通过以上步骤,我们可以实现"最简单的AIDL通信",让一个应用能够调用另一个应用的服务,进行数据交互,从而实现更复杂的系统功能。在实际开发中,理解并熟练掌握AIDL是构建大型、分布式Android应用的关键技能之一。
这个“AndroidAidlDemo”是一个简单的例子,展示了如何使用AIDL来实现不同应用组件之间的数据交换。在毕业设计中,这样的实践可以帮助学生深入理解Android系统的多进程通信机制,提升开发技能。 AIDL的基本概念: 1...
下面是一个简单的AIDL接口示例: ```aidl interface IMyService { void sendString(String data); int receiveInt(); } ``` 在这个例子中,`IMyService`接口定义了两个方法:`sendString`用于发送一个字符串到...
1. **数据类型限制**: AIDL支持基本数据类型、字符串、List、Map以及自定义的Parcelable或Serializable对象。复杂的对象需要实现Parcelable接口,以便于序列化和反序列化。 2. **线程管理**: 跨进程通信发生在不同...
每个参数都有其类型,支持基本数据类型、List、Map以及自定义的Parcelable类。 - **数据传输**:在AIDL中,所有传入和传出的数据都必须是平台支持的类型或者是实现了Parcelable接口的自定义类。这是因为数据需要...
通过"android AidlDemo(简单aidl的例子)"这个示例,开发者可以学习如何创建AIDL接口,实现服务端和客户端的交互,从而掌握Android中的进程间通信技术,提高应用的可扩展性和灵活性。实践中,开发者应根据实际需求...
AIDL支持的数据类型包括基本类型(如int、String等)、List、Map以及自定义的Parcelable对象。当Android编译系统处理AIDL文件时,它会生成相应的Java代码,供客户端和服务端使用。 **AIDL案例分析** 在“aidl简单...
参数可以是基本数据类型、List、Map或自定义的数据类型(需要在同一个AIDL文件或被导入的文件中定义)。 3. 工作原理 当Android编译AIDL文件时,会生成相应的Java绑定类,这些类处理数据序列化和反序列化,以及在...
它允许一个应用组件在不同的进程中运行,并且能够相互调用方法,就像是在同一个进程中一样。当你需要在服务(Service)或者活动(Activity)之间进行复杂的交互,特别是在跨进程的情况下,AIDL就显得非常关键。 **...
下面以一个简单的自定义对象`Achievement`为例,展示如何实现Parcelable: ```java public class Achievement implements Parcelable { private String name; private int points; // 构造函数,getter和setter...
AIDL是Android提供的一种编程工具,它允许开发者定义接口,使得一个应用能透明地调用另一个应用中的服务。 **AIDL基本概念** AIDL本质上是一种简单的接口描述语言,用于定义服务端提供的接口,客户端通过这些接口...
需要注意的是,AIDL支持的数据类型有限,包括基本类型、String、List、Map以及实现了Parcelable接口的自定义对象。此外,由于跨进程通信涉及系统层面的Binder机制,因此在处理过程中可能会遇到远程方法调用(Remote ...
AIDL支持的数据类型包括基本类型(如int, String等)、List、Map以及自定义的Parcelable或Serializable对象。下面是一个简单的AIDL文件示例: ```aidl package com.example.aidldemo; interface IMyService { int...
此外,`AIDL`支持的数据类型包括基本类型、字符串、序列化对象(如`Parcelable`)以及`List`和`Map`(其元素必须是`AIDL`支持的类型)。 总结来说,Android应用间通信可以通过多种方式实现,如使用`Intent`和`...