tencent cloud

文档反馈

多进程交互

最后更新时间:2024-06-27 11:07:53
    小程序 SDK 会为每个打开的小程序创建一个独立的进程,所以宿主应用的进程和小程序的进程是隔离的,
    小程序 SDK 提供了统一的接口用于小程序进程和宿主进程通信。

    判断是否小程序进程

    API 说明:
    /**
    * 当前运行的进程是否是小程序进程
    * @param context
    * @return
    */
    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 说明
    /**
    * 调用小程序进程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"));
    }
    });
    
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持