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 18无 19 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