tencent cloud

腾讯云超级应用服务

动态与公告
【2025年1月2日】关于腾讯云小程序平台更名为腾讯云超级应用服务的公告
控制台更新动态
Android SDK 更新动态
iOS SDK 更新动态
Flutter 更新动态
IDE 更新动态
基础库更新动态
产品简介
产品概述
产品优势
应用场景
购买指南
计费概述
按量计费(后付费)
续费指引
停服说明
快速入门
套餐管理
概述
控制台账号管理
存储配置
加速配置
品牌化配置
平台功能
控制台登录
用户和权限体系
小程序管理
小游戏管理
应用管理
商业化
平台管理
用户管理
团队管理
运营管理
安全中心
代码接入指引
Demo 及 SDK 获取
Android
iOS
Flutter
App 服务端接入指南
GUID 生成规则
小程序开发指南
小程序介绍与开发环境
小程序代码组成
指南
框架
组件
API
服务端
JS SDK
基础库
IDE 使用指南
小游戏开发指南
指南
API
服务端
实践教程
小程序登录实践教程
小程序订阅消息实践教程
支付相关实践教程
广告接入实践教程
小游戏订阅消息实践教程
相关协议
数据处理和安全协议

多进程交互

PDF
聚焦模式
字号
最后更新时间: 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"));
}
});


帮助和支持

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

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

文档反馈