js-apis-app-ability-uiAbility.md 21.6 KB
Newer Older
Z
zengyawen 已提交
1
# @ohos.app.ability.UIAbility (UIAbility)
M
m00512953 已提交
2

Z
zhongjianfei 已提交
3
UIAbility是包含UI界面的应用组件,提供组件创建、销毁、前后台切换等生命周期回调,同时也具备组件协同的能力,组件协同主要提供如下常用功能:
M
m00512953 已提交
4

Z
zhongjianfei 已提交
5 6
- [Caller](#caller):由[startAbilityByCall](js-apis-inner-application-uiAbilityContext.md#uiabilitycontextstartabilitybycall)接口返回,CallerAbility(调用者)可使用Caller与CalleeAbility(被调用者)进行通信。
- [Callee](#callee):UIAbility的内部对象,CalleeAbility(被调用者)可以通过Callee与Caller进行通信。
M
m00512953 已提交
7 8 9 10 11 12 13 14 15

> **说明:**
> 
> 本模块首批接口从API version 9 开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。  
> 本模块接口仅可在Stage模型下使用。

## 导入模块

```ts
D
donglin 已提交
16
import UIAbility from '@ohos.app.ability.UIAbility';
M
m00512953 已提交
17 18 19 20
```

## 属性

M
m00512953 已提交
21
**系统能力**:以下各项对应的系统能力均为SystemCapability.Ability.AbilityRuntime.AbilityCore
M
m00512953 已提交
22

Z
zhongjianfei 已提交
23
| 名称 | 类型 | 可读 | 可写 | 说明 |
M
m00512953 已提交
24
| -------- | -------- | -------- | -------- | -------- |
Z
zhongjianfei 已提交
25 26 27 28
| context | [UIAbilityContext](js-apis-inner-application-uiAbilityContext.md) | 是 | 否 | 上下文。 |
| launchWant | [Want](js-apis-app-ability-want.md) | 是 | 否 | UIAbility启动时的参数。 |
| lastRequestWant | [Want](js-apis-app-ability-want.md) | 是 | 否 | UIAbility最后请求时的参数。|
| callee | [Callee](#callee) | 是 | 否 | 调用Stub(桩)服务对象。|
M
m00512953 已提交
29

Z
zhongjianfei 已提交
30
## UIAbility.onCreate
M
m00512953 已提交
31

M
m00512953 已提交
32
onCreate(want: Want, param: AbilityConstant.LaunchParam): void;
M
m00512953 已提交
33

Z
zhongjianfei 已提交
34
UIAbility创建时回调,执行初始化业务逻辑操作。
M
m00512953 已提交
35

M
m00512953 已提交
36
**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore
M
m00512953 已提交
37 38 39

**参数:**

Z
zhongjianfei 已提交
40 41 42
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| want | [Want](js-apis-app-ability-want.md) | 是 | 当前UIAbility的Want类型信息,包括ability名称、bundle名称等。 |
M
m00512953 已提交
43
| param | [AbilityConstant.LaunchParam](js-apis-app-ability-abilityConstant.md#abilityconstantlaunchparam) | 是 | 创建 ability、上次异常退出的原因信息。 |
M
m00512953 已提交
44 45 46 47

**示例:**

  ```ts
Z
zhongjianfei 已提交
48
  class MyUIAbility extends UIAbility {
M
m00512953 已提交
49 50 51 52 53 54 55
      onCreate(want, param) {
          console.log('onCreate, want:' + want.abilityName);
      }
  }
  ```


Z
zhongjianfei 已提交
56
## UIAbility.onWindowStageCreate
M
m00512953 已提交
57 58 59 60 61

onWindowStageCreate(windowStage: window.WindowStage): void

当WindowStage创建后调用。

M
m00512953 已提交
62
**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore
M
m00512953 已提交
63 64 65

**参数:**

Z
zhongjianfei 已提交
66 67
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
M
m00512953 已提交
68
| windowStage | [window.WindowStage](js-apis-window.md#windowstage9) | 是 | WindowStage相关信息。 |
M
m00512953 已提交
69 70 71 72

**示例:**
    
  ```ts
Z
zhongjianfei 已提交
73
  class MyUIAbility extends UIAbility {
M
m00512953 已提交
74 75 76 77 78 79 80
      onWindowStageCreate(windowStage) {
          console.log('onWindowStageCreate');
      }
  }
  ```


Z
zhongjianfei 已提交
81
## UIAbility.onWindowStageDestroy
M
m00512953 已提交
82 83 84 85 86

onWindowStageDestroy(): void

当WindowStage销毁后调用。

M
m00512953 已提交
87
**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore
M
m00512953 已提交
88 89 90 91

**示例:**
    
  ```ts
Z
zhongjianfei 已提交
92
  class MyUIAbility extends UIAbility {
M
m00512953 已提交
93 94 95 96 97 98 99
      onWindowStageDestroy() {
          console.log('onWindowStageDestroy');
      }
  }
  ```


Z
zhongjianfei 已提交
100
## UIAbility.onWindowStageRestore
M
m00512953 已提交
101 102 103 104 105

onWindowStageRestore(windowStage: window.WindowStage): void

当迁移多实例ability时,恢复WindowStage后调用。

M
m00512953 已提交
106
**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore
M
m00512953 已提交
107 108 109

**参数:**

Z
zhongjianfei 已提交
110 111
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
M
m00512953 已提交
112
| windowStage | [window.WindowStage](js-apis-window.md#windowstage9) | 是 | WindowStage相关信息。 |
M
m00512953 已提交
113 114 115 116

**示例:**
    
  ```ts
Z
zhongjianfei 已提交
117
  class MyUIAbility extends UIAbility {
M
m00512953 已提交
118 119 120 121 122 123 124
      onWindowStageRestore(windowStage) {
          console.log('onWindowStageRestore');
      }
  }
  ```


Z
zhongjianfei 已提交
125
## UIAbility.onDestroy
M
m00512953 已提交
126 127 128

onDestroy(): void;

Z
zhongjianfei 已提交
129
UIAbility生命周期回调,在销毁时回调,执行资源清理等操作。
M
m00512953 已提交
130

M
m00512953 已提交
131
**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore
M
m00512953 已提交
132 133 134 135

**示例:**
    
  ```ts
Z
zhongjianfei 已提交
136
  class MyUIAbility extends UIAbility {
M
m00512953 已提交
137 138 139 140 141 142 143
      onDestroy() {
          console.log('onDestroy');
      }
  }
  ```


Z
zhongjianfei 已提交
144
## UIAbility.onForeground
M
m00512953 已提交
145 146 147

onForeground(): void;

Z
zhongjianfei 已提交
148
UIAbility生命周期回调,当应用从后台转到前台时触发。
M
m00512953 已提交
149

M
m00512953 已提交
150
**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore
M
m00512953 已提交
151 152 153 154

**示例:**
    
  ```ts
Z
zhongjianfei 已提交
155
  class MyUIAbility extends UIAbility {
M
m00512953 已提交
156 157 158 159 160 161 162
      onForeground() {
          console.log('onForeground');
      }
  }
  ```


Z
zhongjianfei 已提交
163
## UIAbility.onBackground
M
m00512953 已提交
164 165 166

onBackground(): void;

Z
zhongjianfei 已提交
167
UIAbility生命周期回调,当应用从前台转到后台时触发。
M
m00512953 已提交
168

M
m00512953 已提交
169
**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore
M
m00512953 已提交
170 171 172 173

**示例:**
    
  ```ts
Z
zhongjianfei 已提交
174
  class MyUIAbility extends UIAbility {
M
m00512953 已提交
175 176 177 178 179 180 181
      onBackground() {
          console.log('onBackground');
      }
  }
  ```


Z
zhongjianfei 已提交
182
## UIAbility.onContinue
M
m00512953 已提交
183

M
m00512953 已提交
184
onContinue(wantParam : {[key: string]: any}): AbilityConstant.OnContinueResult;
M
m00512953 已提交
185 186 187

当ability迁移准备迁移时触发,保存数据。

M
m00512953 已提交
188
**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore
M
m00512953 已提交
189 190 191

**参数:**

Z
zhongjianfei 已提交
192 193 194
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| wantParam | {[key: string]: any} | 是 | want相关参数。 |
M
m00512953 已提交
195 196 197

**返回值:**

Z
zhongjianfei 已提交
198 199
| 类型 | 说明 |
| -------- | -------- |
M
m00512953 已提交
200
| [AbilityConstant.OnContinueResult](js-apis-app-ability-abilityConstant.md#abilityconstantoncontinueresult) | 继续的结果。 |
M
m00512953 已提交
201 202 203 204

**示例:**
    
  ```ts
M
m00512953 已提交
205
  import AbilityConstant from "@ohos.app.ability.AbilityConstant"
Z
zhongjianfei 已提交
206
  class MyUIAbility extends UIAbility {
M
m00512953 已提交
207 208 209
      onContinue(wantParams) {
          console.log('onContinue');
          wantParams["myData"] = "my1234567";
M
m00512953 已提交
210
          return AbilityConstant.OnContinueResult.AGREE;
M
m00512953 已提交
211 212 213 214 215
      }
  }
  ```


Z
zhongjianfei 已提交
216
## UIAbility.onNewWant
M
m00512953 已提交
217

M
m00512953 已提交
218
onNewWant(want: Want, launchParams: AbilityConstant.LaunchParam): void;
M
m00512953 已提交
219

M
m00512953 已提交
220
启动模式为单例的ability再次被拉起时会回调执行该方法。
M
m00512953 已提交
221

M
m00512953 已提交
222
**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore
M
m00512953 已提交
223 224 225

**参数:**

Z
zhongjianfei 已提交
226 227 228
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| want | [Want](js-apis-app-ability-want.md) | 是 | Want类型参数,如ability名称,包名等。 |
M
m00512953 已提交
229
| launchParams | [AbilityConstant.LaunchParam](js-apis-app-ability-abilityConstant.md#abilityconstantlaunchparam) | 是 | UIAbility启动的原因、上次异常退出的原因信息。 |
M
m00512953 已提交
230 231 232 233

**示例:**
    
  ```ts
Z
zhongjianfei 已提交
234
  class MyUIAbility extends UIAbility {
M
m00512953 已提交
235
      onNewWant(want, launchParams) {
M
m00512953 已提交
236
          console.log('onNewWant, want:' + want.abilityName);
M
m00512953 已提交
237
          console.log('onNewWant, launchParams:' + JSON.stringify(launchParams));
M
m00512953 已提交
238 239 240 241
      }
  }
  ```

Z
zhongjianfei 已提交
242
## UIAbility.onDump
M
m00512953 已提交
243

D
merge  
donglin 已提交
244
onDump(params: Array\<string>): Array\<string>;
M
m00512953 已提交
245 246 247

转储客户端信息时调用。

M
m00512953 已提交
248
**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore
M
m00512953 已提交
249 250 251

**参数:**

Z
zhongjianfei 已提交
252 253 254
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| params | Array\<string> | 是 | 表示命令形式的参数。|
M
m00512953 已提交
255 256 257 258

**示例:**
    
  ```ts
Z
zhongjianfei 已提交
259
  class MyUIAbility extends UIAbility {
D
merge  
donglin 已提交
260
      onDump(params) {
M
m00512953 已提交
261 262 263 264 265 266 267
          console.log('dump, params:' + JSON.stringify(params));
          return ["params"]
      }
  }
  ```


Z
zhongjianfei 已提交
268
## UIAbility.onSaveState
M
m00512953 已提交
269

M
m00512953 已提交
270
onSaveState(reason: AbilityConstant.StateType, wantParam : {[key: string]: any}): AbilityConstant.OnSaveResult;
M
m00512953 已提交
271

Z
zhongjianfei 已提交
272
该API配合[appRecovery](js-apis-app-ability-appRecovery.md)使用。在应用故障时,如果使能了自动保存状态,框架将回调onSaveState保存UIAbility状态。
M
m00512953 已提交
273

M
m00512953 已提交
274
**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore
M
m00512953 已提交
275 276 277

**参数:**

Z
zhongjianfei 已提交
278 279
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
M
m00512953 已提交
280
| reason | [AbilityConstant.StateType](js-apis-app-ability-abilityConstant.md#abilityconstantstatetype) | 是 | 回调保存状态的原因。 |
Z
zhongjianfei 已提交
281
| wantParam | {[key:&nbsp;string]:&nbsp;any} | 是 | want相关参数。 |
M
m00512953 已提交
282 283 284

**返回值:**

Z
zhongjianfei 已提交
285 286
| 类型 | 说明 |
| -------- | -------- |
M
m00512953 已提交
287
| [AbilityConstant.OnSaveResult](js-apis-app-ability-abilityConstant.md#abilityconstantonsaveresult) | 是否同意保存当前UIAbility的状态。 |
M
m00512953 已提交
288 289 290 291

**示例:**

  ```ts
M
m00512953 已提交
292
import AbilityConstant from '@ohos.app.ability.AbilityConstant'
M
m00512953 已提交
293

Z
zhongjianfei 已提交
294
class MyUIAbility extends UIAbility {
M
m00512953 已提交
295 296 297
    onSaveState(reason, wantParam) {
        console.log('onSaveState');
        wantParam["myData"] = "my1234567";
M
m00512953 已提交
298
        return AbilityConstant.OnSaveResult.RECOVERY_AGREE;
M
m00512953 已提交
299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314
    }
}
  ```



## Caller

通用组件Caller通信客户端调用接口, 用来向通用组件服务端发送约定数据。

## Caller.call

call(method: string, data: rpc.Sequenceable): Promise&lt;void&gt;;

向通用组件服务端发送约定序列化数据。

M
m00512953 已提交
315
**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore
M
m00512953 已提交
316 317 318

**参数:**

Z
zhongjianfei 已提交
319 320 321
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| method | string | 是 | 约定的服务端注册事件字符串。 |
M
m00512953 已提交
322
| data | [rpc.Sequenceable](js-apis-rpc.md#sequenceabledeprecated) | 是 | 由开发者实现的Sequenceable可序列化数据。 |
M
m00512953 已提交
323 324 325

**返回值:**

Z
zhongjianfei 已提交
326 327 328
| 类型 | 说明 |
| -------- | -------- |
| Promise&lt;void&gt; | Promise形式返回应答。 |
M
m00512953 已提交
329 330 331 332 333

**错误码:**

| 错误码ID | 错误信息 |
| ------- | -------------------------------- |
D
merge  
donglin 已提交
334 335
| 401 | If the input parameter is not valid parameter. |
其他ID见[元能力子系统错误码](../errorcodes/errorcode-ability.md)
M
m00512953 已提交
336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362

**示例:**
    
  ```ts
  class MyMessageAble{ // 自定义的Sequenceable数据结构
    name:""
    str:""
    num: 1
    constructor(name, str) {
      this.name = name;
      this.str = str;
    }
    marshalling(messageParcel) {
      messageParcel.writeInt(this.num);
      messageParcel.writeString(this.str);
      console.log('MyMessageAble marshalling num[' + this.num + '] str[' + this.str + ']');
      return true;
    }
    unmarshalling(messageParcel) {
      this.num = messageParcel.readInt();
      this.str = messageParcel.readString();
      console.log('MyMessageAble unmarshalling num[' + this.num + '] str[' + this.str + ']');
      return true;
    }
  };
  var method = 'call_Function'; // 约定的通知消息字符串
  var caller;
Z
zhongjianfei 已提交
363
  export default class MainUIAbility extends UIAbility {
M
m00512953 已提交
364
    onWindowStageCreate(windowStage) {
Z
zhongjianfei 已提交
365
      this.context.startUIAbilityByCall({
M
m00512953 已提交
366
        bundleName: "com.example.myservice",
Z
zhongjianfei 已提交
367
        abilityName: "MainUIAbility",
M
m00512953 已提交
368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394
        deviceId: ""
      }).then((obj) => {
        caller = obj;
        let msg = new MyMessageAble("msg", "world"); // 参考Sequenceable数据定义
        caller.call(method, msg)
          .then(() => {
            console.log('Caller call() called');
          })
          .catch((callErr) => {
            console.log('Caller.call catch error, error.code: ' + JSON.stringify(callErr.code) +
              ' error.message: ' + JSON.stringify(callErr.message));
          });
      }).catch((err) => {
        console.log('Caller GetCaller error, error.code: ' + JSON.stringify(err.code) +
          ' error.message: ' + JSON.stringify(err.message));
      });
    }
  }
  ```


## Caller.callWithResult

callWithResult(method: string, data: rpc.Sequenceable): Promise&lt;rpc.MessageParcel&gt;;

向通用组件服务端发送约定序列化数据, 并将服务端返回的约定序列化数据带回。

M
m00512953 已提交
395
**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore
M
m00512953 已提交
396 397 398

**参数:**

Z
zhongjianfei 已提交
399 400 401
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| method | string | 是 | 约定的服务端注册事件字符串。 |
M
m00512953 已提交
402
| data | [rpc.Sequenceable](js-apis-rpc.md#sequenceabledeprecated) | 是 | 由开发者实现的Sequenceable可序列化数据。 |
M
m00512953 已提交
403 404 405

**返回值:**

Z
zhongjianfei 已提交
406 407
| 类型 | 说明 |
| -------- | -------- |
M
m00512953 已提交
408
| Promise&lt;[rpc.MessageParcel](js-apis-rpc.md#sequenceabledeprecated)&gt; | Promise形式返回通用组件服务端应答数据。 |
M
m00512953 已提交
409 410 411 412 413

**错误码:**

| 错误码ID | 错误信息 |
| ------- | -------------------------------- |
D
merge  
donglin 已提交
414 415
| 401 | If the input parameter is not valid parameter. |
其他ID见[元能力子系统错误码](../errorcodes/errorcode-ability.md)
M
m00512953 已提交
416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442

**示例:**

  ```ts
  class MyMessageAble{
    name:""
    str:""
    num: 1
    constructor(name, str) {
      this.name = name;
      this.str = str;
    }
    marshalling(messageParcel) {
      messageParcel.writeInt(this.num);
      messageParcel.writeString(this.str);
      console.log('MyMessageAble marshalling num[' + this.num + '] str[' + this.str + ']');
      return true;
    }
    unmarshalling(messageParcel) {
      this.num = messageParcel.readInt();
      this.str = messageParcel.readString();
      console.log('MyMessageAble unmarshalling num[' + this.num + '] str[' + this.str + ']');
      return true;
    }
  };
  var method = 'call_Function';
  var caller;
Z
zhongjianfei 已提交
443
  export default class MainUIAbility extends UIAbility {
M
m00512953 已提交
444
    onWindowStageCreate(windowStage) {
Z
zhongjianfei 已提交
445
      this.context.startUIAbilityByCall({
M
m00512953 已提交
446
        bundleName: "com.example.myservice",
Z
zhongjianfei 已提交
447
        abilityName: "MainUIAbility",
M
m00512953 已提交
448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476
        deviceId: ""
      }).then((obj) => {
        caller = obj;
        let msg = new MyMessageAble(1, "world");
        caller.callWithResult(method, msg)
          .then((data) => {
            console.log('Caller callWithResult() called');
            let retmsg = new MyMessageAble(0, "");
            data.readSequenceable(retmsg);
          })
          .catch((callErr) => {
            console.log('Caller.callWithResult catch error, error.code: ' + JSON.stringify(callErr.code) +
              ' error.message: ' + JSON.stringify(callErr.message));
          });
      }).catch((err) => {
        console.log('Caller GetCaller error, error.code: ' + JSON.stringify(err.code) +
          ' error.message: ' + JSON.stringify(err.message));
      });
    }
  }
  ```


## Caller.release

release(): void;

主动释放通用组件服务端的通信接口。

M
m00512953 已提交
477
**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore
M
m00512953 已提交
478 479 480 481 482 483 484 485 486 487 488 489 490 491

**错误码:**

| 错误码ID | 错误信息 |
| ------- | -------------------------------- |
| 401 | Invalid input parameter. |
| 16200001 | Caller released. The caller has been released. |
| 16200002 | Callee invalid. The callee does not exist. |
| 16000050 | Internal Error. |

**示例:**
    
  ```ts
  var caller;
Z
zhongjianfei 已提交
492
  export default class MainUIAbility extends UIAbility {
M
m00512953 已提交
493
    onWindowStageCreate(windowStage) {
Z
zhongjianfei 已提交
494
      this.context.startUIAbilityByCall({
M
m00512953 已提交
495
        bundleName: "com.example.myservice",
Z
zhongjianfei 已提交
496
        abilityName: "MainUIAbility",
M
m00512953 已提交
497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513
        deviceId: ""
      }).then((obj) => {
        caller = obj;
        try {
          caller.release();
        } catch (releaseErr) {
          console.log('Caller.release catch error, error.code: ' + JSON.stringify(releaseErr.code) +
            ' error.message: ' + JSON.stringify(releaseErr.message));
        }
      }).catch((err) => {
        console.log('Caller GetCaller error, error.code: ' + JSON.stringify(err.code) +
          ' error.message: ' + JSON.stringify(err.message));
      });
    }
  }
  ```

D
ability  
donglin 已提交
514 515 516 517 518 519
## Caller.onRelease

 onRelease(callback: OnReleaseCallBack): void;

注册通用组件服务端Stub(桩)断开监听通知。

M
m00512953 已提交
520
**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore
D
ability  
donglin 已提交
521 522 523

**参数:**

Z
zhongjianfei 已提交
524 525
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
M
m00512953 已提交
526
| callback | [OnReleaseCallBack](#onreleasecallback) | 是 | 返回onRelease回调结果。 |
D
ability  
donglin 已提交
527 528 529 530 531

**示例:**
    
  ```ts
  var caller;
Z
zhongjianfei 已提交
532
  export default class MainUIAbility extends UIAbility {
D
ability  
donglin 已提交
533
    onWindowStageCreate(windowStage) {
Z
zhongjianfei 已提交
534
      this.context.startUIAbilityByCall({
D
ability  
donglin 已提交
535
        bundleName: "com.example.myservice",
Z
zhongjianfei 已提交
536
        abilityName: "MainUIAbility",
D
ability  
donglin 已提交
537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554
        deviceId: ""
      }).then((obj) => {
          caller = obj;
          try {
            caller.onRelease((str) => {
                console.log(' Caller OnRelease CallBack is called ' + str);
            });
          } catch (error) {
            console.log('Caller.on catch error, error.code: ' + JSON.stringify(error.code) +
              ' error.message: ' + JSON.stringify(error.message));
          }
      }).catch((err) => {
        console.log('Caller GetCaller error, error.code: ' + JSON.stringify(err.code) +
          ' error.message: ' + JSON.stringify(err.message));
      });
    }
  }
  ```
M
m00512953 已提交
555 556 557 558 559 560 561

## Caller.on

 on(type: "release", callback: OnReleaseCallback): void;

注册通用组件服务端Stub(桩)断开监听通知。

M
m00512953 已提交
562
**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore
M
m00512953 已提交
563 564 565

**参数:**

Z
zhongjianfei 已提交
566 567 568
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| type | string | 是 | 监听releaseCall事件,固定为'release'。 |
M
m00512953 已提交
569
| callback | [OnReleaseCallBack](#onreleasecallback) | 是 | 返回onRelease回调结果。 |
M
m00512953 已提交
570 571 572 573 574

**错误码:**

| 错误码ID | 错误信息 |
| ------- | -------------------------------- |
D
merge  
donglin 已提交
575 576
| 401 | If the input parameter is not valid parameter. |
其他ID见[元能力子系统错误码](../errorcodes/errorcode-ability.md)
M
m00512953 已提交
577 578 579 580 581

**示例:**
    
  ```ts
  var caller;
Z
zhongjianfei 已提交
582
  export default class MainUIAbility extends UIAbility {
M
m00512953 已提交
583
    onWindowStageCreate(windowStage) {
Z
zhongjianfei 已提交
584
      this.context.startUIAbilityByCall({
M
m00512953 已提交
585
        bundleName: "com.example.myservice",
Z
zhongjianfei 已提交
586
        abilityName: "MainUIAbility",
M
m00512953 已提交
587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612
        deviceId: ""
      }).then((obj) => {
          caller = obj;
          try {
            caller.on("release", (str) => {
                console.log(' Caller OnRelease CallBack is called ' + str);
            });
          } catch (error) {
            console.log('Caller.on catch error, error.code: ' + JSON.stringify(error.code) +
              ' error.message: ' + JSON.stringify(error.message));
          }
      }).catch((err) => {
        console.log('Caller GetCaller error, error.code: ' + JSON.stringify(err.code) +
          ' error.message: ' + JSON.stringify(err.message));
      });
    }
  }
  ```


## Callee

通用组件服务端注册和解除客户端caller通知送信的callback接口。

## Callee.on

D
merge  
donglin 已提交
613
on(method: string, callback: CalleeCallback): void;
M
m00512953 已提交
614 615 616

通用组件服务端注册消息通知callback。

M
m00512953 已提交
617
**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore
M
m00512953 已提交
618 619 620

**参数:**

Z
zhongjianfei 已提交
621 622 623
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| method | string | 是 | 与客户端约定的通知消息字符串。 |
M
m00512953 已提交
624
| callback | [CalleeCallback](#calleecallback) | 是 | 一个[rpc.MessageParcel](js-apis-rpc.md#messageparceldeprecated)类型入参的js通知同步回调函数,&nbsp;回调函数至少要返回一个空的[rpc.Sequenceable](js-apis-rpc.md#sequenceabledeprecated)数据对象,&nbsp;其他视为函数执行错误。 |
M
m00512953 已提交
625 626 627 628 629

**错误码:**

| 错误码ID | 错误信息 |
| ------- | -------------------------------- |
D
merge  
donglin 已提交
630 631
| 401 | If the input parameter is not valid parameter. |
其他ID见[元能力子系统错误码](../errorcodes/errorcode-ability.md)
M
m00512953 已提交
632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663

**示例:**

  ```ts
  class MyMessageAble{
      name:""
      str:""
      num: 1
      constructor(name, str) {
        this.name = name;
        this.str = str;
      }
      marshalling(messageParcel) {
          messageParcel.writeInt(this.num);
          messageParcel.writeString(this.str);
          console.log('MyMessageAble marshalling num[' + this.num + '] str[' + this.str + ']');
          return true;
      }
      unmarshalling(messageParcel) {
          this.num = messageParcel.readInt();
          this.str = messageParcel.readString();
          console.log('MyMessageAble unmarshalling num[' + this.num + '] str[' + this.str + ']');
          return true;
      }
  };
  var method = 'call_Function';
  function funcCallBack(pdata) {
      console.log('Callee funcCallBack is called ' + pdata);
      let msg = new MyMessageAble("test", "");
      pdata.readSequenceable(msg);
      return new MyMessageAble("test1", "Callee test");
  }
Z
zhongjianfei 已提交
664
  export default class MainUIAbility extends UIAbility {
M
m00512953 已提交
665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682
    onCreate(want, launchParam) {
      console.log('Callee onCreate is called');
      try {
        this.callee.on(method, funcCallBack);
      } catch (error) {
        console.log('Callee.on catch error, error.code: ' + JSON.stringify(error.code) +
          ' error.message: ' + JSON.stringify(error.message));
      }
    }
  }
  ```

## Callee.off

off(method: string): void;

解除通用组件服务端注册消息通知callback。

M
m00512953 已提交
683
**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore
M
m00512953 已提交
684 685 686

**参数:**

Z
zhongjianfei 已提交
687 688 689
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| method | string | 是 | 已注册的通知事件字符串。 |
M
m00512953 已提交
690 691 692 693 694

**错误码:**

| 错误码ID | 错误信息 |
| ------- | -------------------------------- |
D
merge  
donglin 已提交
695 696
| 401 | If the input parameter is not valid parameter. |
其他ID见[元能力子系统错误码](../errorcodes/errorcode-ability.md)
M
m00512953 已提交
697 698 699 700 701 702


**示例:**
    
  ```ts
  var method = 'call_Function';
Z
zhongjianfei 已提交
703
  export default class MainUIAbility extends UIAbility {
M
m00512953 已提交
704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719
    onCreate(want, launchParam) {
      console.log('Callee onCreate is called');
      try {
        this.callee.off(method);
      } catch (error) {
        console.log('Callee.off catch error, error.code: ' + JSON.stringify(error.code) +
          ' error.message: ' + JSON.stringify(error.message));
      }
    }
  }
  ```

## OnReleaseCallback

(msg: string): void;

M
m00512953 已提交
720
**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore
M
m00512953 已提交
721

Z
zhongjianfei 已提交
722
| 名称 | 可读 | 可写 | 类型 | 说明 |
M
m00512953 已提交
723
| -------- | -------- | -------- | -------- | -------- |
Z
zhongjianfei 已提交
724
| (msg: string) | 是 | 否 | function | 调用者注册的侦听器函数接口的原型。 |
M
m00512953 已提交
725 726 727 728 729

## CalleeCallback

(indata: rpc.MessageParcel): rpc.Sequenceable;

M
m00512953 已提交
730
**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore
M
m00512953 已提交
731

Z
zhongjianfei 已提交
732
| 名称 | 可读 | 可写 | 类型 | 说明 |
M
m00512953 已提交
733
| -------- | -------- | -------- | -------- | -------- |
M
m00512953 已提交
734
| (indata: [rpc.MessageParcel](js-apis-rpc.md#messageparceldeprecated)) | 是 | 否 | [rpc.Sequenceable](js-apis-rpc.md#sequenceabledeprecated) | 被调用方注册的消息侦听器函数接口的原型。 |