区分一下Linux的进程间通信的方式:管道,Binder,socket,共享内存;
1.Intent(显示一般用于同一程序,隐式一般都是跨进程)
intent/Bundle支持传递类型:
1.八大基本数据类型
2.String、Character引用类型
3.实现了Serializable和Parcelable接口的对象
action指动作,可以多个,但跳转的activity中的infiter一定要包含这个action;
category(0个或多个):比如指定默认登录主界面:CATEGORY_LAUNCHER;
data(只有一个)的scheme指的是前缀http等;
host指的是主机名google.com等
port指url端口号
2.Content Provider
3.广播
4.AIDL
首先AIDL支持的类型有(没有Serializable对象):
八大基本类型;
String,Character,List,Map;
实现了Parcelable接口的对象;
步骤:
1.创建一个服务端(在OnBind方法中返回一个IBinder对象,这个对象是是通过AIDL接口名.Stub来得到的)
2.创建一个客户端;(在服务端调用OnBind方法后,客户端就可以和服务端连接了;怎么连?实现ServiceConnection类,里面也要用到AIDL接口名来获取各种服务端传过来的值(即把Binder对象转为ADIL接口))
3.创建AIDL接口文件(直接新建一个普通文件(New->File),取名为 ABXXXService.aidl的aidl后缀文件)
首先,先创建一个service子类
客户端:
AIDL文件: