-
Notifications
You must be signed in to change notification settings - Fork 20
接入IPCInvoker
Albie Liang edited this page Nov 29, 2018
·
6 revisions
IPCInvoker组件库已经提交到jcenter上了,可以直接dependencies中配置引用
dependencies {
compile 'cc.suitalk.android:ipc-invoker:<last-version>'
}
这里以PushProcessIPCService为示例,代码如下:
public class PushProcessIPCService extends BaseIPCService {
public static final String PROCESS_NAME = "cc.suitalk.ipcinvoker.sample:push";
@Override
public String getProcessName() {
return PROCESS_NAME;
}
}
在manifest.xml中配置service
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="cc.suitalk.ipcinvoker.sample">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<service
android:name=".service.PushProcessIPCService"
android:process=":push"
android:exported="false"/>
</application>
</manifest>
这里需要在你的项目所有需要支持跨进程调用的进程中调用IPCInvoker.setup(Application, IPCInvokerInitDelegate)
方法,并在传入的IPCInvokerInitDelegate接口实现中,将该进程需要支持访问的远端进程相应的Service的class添加到IPCInvoker当中,示例如下:
public class IPCInvokerApplication extends Application {
private static final ILogPrinter sLogPrinter = new DefaultLogPrinter();
@Override
public void onCreate() {
super.onCreate();
// Initialize IPCInvoker
IPCInvoker.setup(this, new DefaultInitDelegate() {
@Override
public void onInitialize(IPCInvokerInitializer initializer) {
initializer.setLogPrinter(sLogPrinter);
initializer.setExecutorServiceCreator(new ExecutorServiceCreator() {
@Override
public ExecutorService create() {
return new ScheduledThreadPoolExecutor(5);
}
});
}
@Override
public void onAttachServiceInfo(IPCInvokerInitializer initializer) {
initializer.addIPCService(PushProcessIPCService.PROCESS_NAME, PushProcessIPCService.class);
}
@Override
public void onAddTypeTransfer(TypeTransferInitializer initializer) {
super.onAddTypeTransfer(initializer);
initializer.addTypeTransfer(new TestTypeTransfer());
}
});
}
}
通过IPCInvokerInitializer可以自定义Log输出,IPCInvoker Task执行的线程池,还可以定制类型转换器TypeTransfer。
到此为止IPCInvoker引入已经完成,可以直接在项目中使用IPCInvoker的跨进程调用接口了。