tencent cloud

多进程交互

PDF
聚焦模式
字号
最后更新时间: 2026-04-07 14:47:09
小程序 SDK 会为每个打开的小程序创建一个独立的进程,所以宿主应用的进程和小程序的进程是隔离的,
小程序 SDK 提供了统一的接口用于小程序进程和宿主进程通信。

判断是否小程序进程

API 说明:
/**
* 当前运行的进程是否是小程序进程
* @param context
* @return
*/
public static boolean isMiniProcess(Context context)

宿主进程调用小程序进程的插件

1. 实现一个子进程的插件扩展

实现步骤说明:
继承 BaseIpcPlugin。
使用注解 @IpcMiniPlugin 修饰定义的类。
使用注解 @IpcEvent 修饰 invoke 方法,并定义插件事件名。
注意:
主进程调用小程序进程时,如果小程序当前没有在运行,调用会失败,callMiniProcessPlugin 不会主动拉起小程序进程。
示例代码:
@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 说明
/**
* 调用小程序进程Plugin插件(调用正式版小程序),此方法只能在主进程中被调用
*
* @param appId 小程序id
* @param eventId
* @param request
* @param callback
*/
public static void callMiniProcessPlugin(String appId, String eventId, Bundle request, IpcCallback callback)
/**
* 调用小程序进程Plugin插件(调用开发\\预览小程序),此方法只能在主进程中被调用
*
* @param appId 小程序id
* @param appVerType 小程序类型,参考 MiniApp
* @param eventId
* @param request
* @param 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,用于接收宿主进程回调。
/**
* 调用主进程Plugin插件,此方法只能在小程序进程中被调用
*
* @param eventId
* @param request
* @param callback
*/
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"));
}
});


帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈