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