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