• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.app.ability.ChildProcessArgs (子进程参数)
2<!--Kit: Ability Kit-->
3<!--Subsystem: Ability-->
4<!--Owner: @SKY2001-->
5<!--Designer: @jsjzju-->
6<!--Tester: @lixueqing513-->
7<!--Adviser: @huipeizi-->
8
9传递到子进程的参数。[childProcessManager](js-apis-app-ability-childProcessManager.md)启动子进程时,可以通过ChildProcessArgs传递参数到子进程中。
10
11> **说明:**
12>
13> 本模块首批接口从API version 12开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
14>
15> 本模块接口仅可在Stage模型下使用。
16
17## 导入模块
18
19```ts
20import { ChildProcessArgs } from '@kit.AbilityKit';
21```
22
23## ChildProcessArgs
24
25**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
26
27| 名称        | 类型                    | 只读 | 可选  | 说明                                                         |
28| ----------- | --------------------   | ---- | ------|------------------------------------------------------ |
29| entryParams | string                 |  否  | 是 |开发者自定义参数,透传到子进程中。可以在[ChildProcess.onStart](js-apis-app-ability-childProcess.md#childprocessonstart)方法中通过args.entryParams获取,entryParams支持传输的最大数据量为150KB。|
30| fds         | Record<string, number> |  否  | 是 |文件描述符句柄集合,用于主进程和子进程通信,通过key-value的形式传入到子进程中,其中key为自定义字符串,value为文件描述符句柄。可以在[ChildProcess.onStart](js-apis-app-ability-childProcess.md#childprocessonstart)方法中通过args.fds获取fd句柄。<br/><b>说明:</b> <br>- fds最多支持16组,每组key的最大长度为20字符。<br>- 传递到子进程中句柄数字可能会变,但是指向的文件是一致的。|
31
32**示例:**
33
34示例中的context的获取方式请参见[获取UIAbility的上下文信息](../../application-models/uiability-usage.md#获取uiability的上下文信息)。
35
36```ts
37// 主进程中:
38import { common, ChildProcessArgs, childProcessManager } from '@kit.AbilityKit';
39import { fileIo } from '@kit.CoreFileKit';
40
41@Entry
42@Component
43struct Index {
44  build() {
45    Row() {
46      Column() {
47        Text('Click')
48          .fontSize(30)
49          .fontWeight(FontWeight.Bold)
50          .onClick(() => {
51            let context = this.getUIContext().getHostContext() as common.UIAbilityContext;
52            let path = context.filesDir + "/test.txt";
53            let file = fileIo.openSync(path, fileIo.OpenMode.READ_ONLY | fileIo.OpenMode.CREATE);
54            let args: ChildProcessArgs = {
55              entryParams: "testParam",
56              fds: {
57                "key1": file.fd
58              }
59            };
60            childProcessManager.startArkChildProcess("entry/./ets/process/DemoProcess.ets", args);
61          });
62      }
63      .width('100%')
64    }
65    .height('100%')
66  }
67}
68```
69
70```ts
71// 子进程中:
72import { ChildProcess, ChildProcessArgs } from '@kit.AbilityKit';
73
74export default class DemoProcess extends ChildProcess {
75
76  onStart(args?: ChildProcessArgs) {
77    let entryParams = args?.entryParams;
78    let fd = args?.fds?.key1;
79    // ..
80  }
81}
82```
83