小程序 SDK 会为每个打开的小程序创建一个独立的进程,所以宿主应用的进程和小程序的进程是隔离的,
小程序 SDK 提供了统一的接口用于小程序进程和宿主进程通信。
判断是否小程序进程
API 说明:
public static boolean isMiniProcess(Context context)
宿主进程调用小程序进程的插件
1. 实现一个子进程的插件扩展
实现步骤说明:
继承 BaseIpcPlugin。
使用注解 @IpcMiniPlugin 修饰定义的类。
使用注解 @IpcEvent 修饰 invoke方法,并定义插件事件名。
示例代码:
@IpcMiniPlugin
public class MiniProcessIpcPlugin extends BaseIpcPlugin {
public static final String EVENT = "MiniProcessPlugin";
@Override
@IpcEvent(EVENT)
public void invoke(IpcRequestEvent req) {
String value = req.data.getString("key");
Log.d(ModuleApplet.TAG, "current process:" + ProcessUtil.getProcessName(req.context) + "|call from main process: " + value);
Bundle resp = new Bundle();
resp.putString("key", "i am ok");
req.ok(resp);
}
}
2. 宿主进程中调用小程序进程的插件
API 说明
public static void callMiniProcessPlugin(String appId, String eventId, Bundle request, IpcCallback callback)
public static void callMiniProcessPlugin(String appId, int appVerType, String eventId, Bundle request, IpcCallback callback)
示例代码:
TmfMiniSDK.callMiniProcessPlugin("", MiniProcessIpcPlugin.EVENT, bundle, new IpcCallback() {
@Override
public void result(boolean isSucc, Bundle response) {
Log.d(ModuleApplet.TAG, "current process:" + ProcessUtil.getProcessName(ModuleApplet.sApp) + "|isSucc:" + isSucc + "|callback data: " + response.getString("key"));
}
});
小程序进程调用宿主进程插件
1. 实现一个宿主进程的扩展插件
实现步骤说明:
继承 BaseIpcPlugin。
使用注解 @IpcMainPlugin 修饰定义的类。
使用注解 @IpcEvent 修饰 invoke 方法,并定义插件事件名。
示例代码:
@IpcMainPlugin
public class MainProcessIpcPlugin extends BaseIpcPlugin {
public static final String EVENT = "MainProcessPlugin";
@Override
@IpcEvent(EVENT)
public void invoke(IpcRequestEvent req) {
String value = req.data.getString("key");
Log.d(ModuleApplet.TAG, "current process|" + ProcessUtil.getProcessName(req.context) + "|call from mini process:" + value);
Bundle resp = new Bundle();
resp.putString("key", "i am ok");
req.ok(resp);
}
}
2. 小程序进程中调用宿主进程插件
API 说明
参数说明:
参数 eventId,表示宿主进程定义的事件名称。
参数 request,表示小程序进程传递给宿主进程插件的参数。
参数ipcCallBack,用于接收宿主进程回调。
public static void callMainProcessPlugin(String eventId, Bundle request, IpcCallback callback)
示例代码:
TmfMiniSDK.callMainProcessPlugin(MainProcessIpcPlugin.EVENT, bundle, new IpcCallback() {
@Override
public void result(boolean isSucc, Bundle response) {
Log.d(ModuleApplet.TAG, "current process:" + ProcessUtil.getProcessName(ModuleApplet.sApp) + "|isSucc:" + isSucc + "|callback data:" + response.getString("key"));
}
});
本页内容是否解决了您的问题?