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