在服务中注册广播的方式实现通信:
创建一个BroadcastReceiver,再创建一个Service,在这个service里面动态注册这个BroadcastReceiver,然后因为不在同一个项目,所以需要隐式启动这个服务,和Activity的隐式启动一样,需要给Intent指定action(intent.seAction())
AIDL的方式实现通信:
把抽取出来的接口的后缀名改成aidl,再把这个aidl复制到两个进程所在的项目,包名要一样,你会看到两个项目的gen文件夹下都生成了和你定义的接口同名的Java文件。自定义的接口里面定义的方法是继承Binder的那个类的对象需要调用的方法。这样两个进程拥有相同的aidl文件,就可以理解为aidl这个文件里面住着一个“中间人”(stub),这个“中间人”可以在两个进程之间起到一个牵线搭桥的作用(像不像媒婆)。在onServiceConnected()方法里面利用“stub.asInterface(service)”将onBind()方法返回的IBinder对象强转成Binder的实现类的对象。