• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.app.ability.DriverExtensionAbility (DriverExtensionAbility)
2
3DriverExtensionAbility模块提供驱动相关扩展能力,提供驱动创建、销毁、连接、断开等生命周期回调。
4
5> **说明:**
6>
7> 本模块首批接口从API version 10开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
8> 本模块接口仅可在Stage模型下使用。
9
10## 导入模块
11
12```ts
13import DriverExtension from '@ohos.app.ability.DriverExtensionAbility';
14```
15
16## 权限
17
1819
20## 属性
21
22**系统能力**:SystemCapability.Driver.ExternalDevice
23
24
25| 名称 | 类型 | 可读 | 可写 | 说明 |
26| -------- | -------- | -------- | -------- | -------- |
27| context | [DriverExtensionContext](js-apis-inner-application-driverExtensionContext.md)  | 是 | 否 | DriverExtension的上下文环境,继承自ExtensionContext。 |
28
29
30## DriverExtensionAbility.onInit
31
32onInit(want: Want): void;
33
34Extension生命周期回调,在创建时回调,执行初始化业务逻辑操作。
35
36**系统能力**:SystemCapability.Driver.ExternalDevice
37
38**参数:**
39
40| 参数名 | 类型 | 必填 | 说明 |
41| -------- | -------- | -------- | -------- |
42| want |  [Want](js-apis-app-ability-want.md) | 是 | 当前Extension相关的Want类型信息,包括ability名称、bundle名称等。 |
43
44**示例:**
45
46  ```ts
47  import DriverExtension from '@ohos.app.ability.DriverExtensionAbility';
48  import Want from '@ohos.app.ability.Want';
49  class DriverExt extends DriverExtension {
50    onInit(want : Want) {
51      console.log('onInit, want: ${want.abilityName}');
52    }
53  }
54  ```
55
56
57## DriverExtensionAbility.onRelease
58
59onRelease(): void;
60
61Extension生命周期回调,在销毁时回调,执行资源清理等操作。
62
63**系统能力**:SystemCapability.Driver.ExternalDevice
64
65**示例:**
66
67  ```ts
68  class DriverExt extends DriverExtension {
69    onRelease() {
70      console.log('onRelease');
71    }
72  }
73  ```
74
75
76## DriverExtensionAbility.onConnect
77
78onConnect(want: Want): rpc.RemoteObject | Promise<rpc.RemoteObject>;
79
80Extension生命周期回调,如果是connectAbility拉起的服务,会在onCreate之后回调。返回一个RemoteObject对象,用于客户端和服务端进行通信。
81
82**系统能力**:SystemCapability.Driver.ExternalDevice
83
84**参数:**
85
86| 参数名 | 类型 | 必填 | 说明 |
87| -------- | -------- | -------- | -------- |
88| want |  [Want](js-apis-app-ability-want.md)| 是 | 当前Extension相关的Want类型信息,包括ability名称、bundle名称等。 |
89
90**返回值:**
91
92| 类型 | 说明 |
93| -------- | -------- |
94| rpc.RemoteObject | 一个RemoteObject对象,用于客户端和服务端进行通信。 |
95
96**示例:**
97
98  ```ts
99  import DriverExtension from '@ohos.app.ability.DriverExtensionAbility';
100  import rpc from '@ohos.rpc';
101  import Want from '@ohos.app.ability.Want';
102  class StubTest extends rpc.RemoteObject{
103      constructor(des : string) {
104          super(des);
105      }
106      onRemoteMessageRequest(code : number, data : rpc.MessageSequence, reply : rpc.MessageSequence, option : rpc.MessageOption) {
107        //必须重写此接口
108        return true;
109      }
110  }
111  class DriverExt extends DriverExtension {
112    onConnect(want : Want) {
113      console.log('onConnect , want: ${want.abilityName}');
114      return new StubTest('test');
115    }
116  }
117  ```
118
119如果生成返回值RemoteObject依赖一个异步接口,可以使用异步生命周期:
120
121  ```ts
122import DriverExtension from '@ohos.app.ability.DriverExtensionAbility';
123import rpc from '@ohos.rpc';
124import Want from '@ohos.app.ability.Want';
125class StubTest extends rpc.RemoteObject{
126    constructor(des : string) {
127        super(des);
128    }
129    onRemoteMessageRequest(code : number, data : rpc.MessageSequence, reply : rpc.MessageSequence, option : rpc.MessageOption) {
130      //必须重写此接口
131      return true;
132    }
133}
134async function getDescriptor() {
135    // 调用异步函数...
136    return "asyncTest"
137}
138class DriverExt extends DriverExtension {
139  async onConnect(want : Want) {
140    console.log(`onConnect , want: ${want.abilityName}`);
141    let descriptor = await getDescriptor();
142    return new StubTest(descriptor);
143  }
144}
145  ```
146
147## DriverExtensionAbility.onDisconnect
148
149onDisconnect(want: Want): void | Promise\<void>;
150
151Extension的生命周期回调,客户端执行断开连接服务时回调。
152
153**系统能力**:SystemCapability.Driver.ExternalDevice
154
155**参数:**
156
157| 参数名 | 类型 | 必填 | 说明 |
158| -------- | -------- | -------- | -------- |
159| want |[Want](js-apis-app-ability-want.md)| 是 | 当前Extension相关的Want类型信息,包括ability名称、bundle名称等。 |
160
161**示例:**
162
163  ```ts
164  import DriverExtension from '@ohos.app.ability.DriverExtensionAbility';
165  import Want from '@ohos.app.ability.Want';
166  class DriverExt extends DriverExtension {
167    onDisconnect(want : Want) {
168      console.log('onDisconnect, want: ${want.abilityName}');
169    }
170  }
171  ```
172
173在执行完onDisconnect生命周期回调后,应用可能会退出,从而可能导致onDisconnect中的异步函数未能正确执行,比如异步写入数据库。可以使用异步生命周期,以确保异步onDisconnect完成后再继续后续的生命周期。
174
175  ```ts
176import DriverExtension from '@ohos.app.ability.DriverExtensionAbility';
177import Want from '@ohos.app.ability.Want';
178class DriverExt extends DriverExtension {
179  async onDisconnect(want : Want) {
180    console.log('onDisconnect, want: ${want.abilityName}');
181    // 调用异步函数...
182  }
183}
184  ```
185
186
187## DriverExtensionAbility.onDump
188
189onDump(params: Array\<string>): Array\<string>;
190
191转储客户端信息时调用。
192
193**系统能力**:SystemCapability.Driver.ExternalDevice
194
195**参数:**
196
197| 参数名 | 类型 | 必填 | 说明 |
198| -------- | -------- | -------- | -------- |
199| params | Array\<string> | 是 | 表示命令形式的参数。|
200
201**示例:**
202
203  ```ts
204  class DriverExt extends DriverExtension {
205      onDump(params : Array<string>) {
206          console.log(`dump, params: ${JSON.stringify(params)}`);
207          return ['params'];
208      }
209  }
210  ```
211
212