android中进程间的通信对与大量的接口的调用的时候,一般是子进程调用主进程的方法,但是主进程主动调用子进程的方法,一直没找到相关的资料,现在项目的需要,与同事研究出来了,直接上代码:
在主进程中实现如下的aidl的代码
package com.sunhb.main.aidl;
import com.sunhb.main.aidl.IClient;
interface IMain
{
void regesiterClient(IClient iclient);
}
这个是在主进程中实现
package com.sunhb.main.aidl;
interface IClient
{
void initClient();
}
在子进程中实现
在子进程中绑定连接的时候
iMain = IMain.Stub.asInterface(service);
try
{
iMain.regesiterClient(new ClientImpl());
}
catch (RemoteException e)
{
e.printStackTrace();
}
这个时候在主进程中
class MainImpl extends IMain.Stub
{
@Override
public void regesiterClient(IClient iclient)
throws RemoteException
{
System.out.println("-------------------");
TextService.this.iClient = iclient;
TextService.this.iClient.initClient();
}
}
这样就实现主进程主动的调用子进程的方法
在主进程中实现如下的aidl的代码
package com.sunhb.main.aidl;
import com.sunhb.main.aidl.IClient;
interface IMain
{
void regesiterClient(IClient iclient);
}
这个是在主进程中实现
package com.sunhb.main.aidl;
interface IClient
{
void initClient();
}
在子进程中实现
在子进程中绑定连接的时候
iMain = IMain.Stub.asInterface(service);
try
{
iMain.regesiterClient(new ClientImpl());
}
catch (RemoteException e)
{
e.printStackTrace();
}
这个时候在主进程中
class MainImpl extends IMain.Stub
{
@Override
public void regesiterClient(IClient iclient)
throws RemoteException
{
System.out.println("-------------------");
TextService.this.iClient = iclient;
TextService.this.iClient.initClient();
}
}
这样就实现主进程主动的调用子进程的方法