js-apis-application-ability.md 15.9 KB
Newer Older
ahjxliubao2's avatar
ahjxliubao2 已提交
1 2 3
# Ability

> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
4
> 本模块首批接口从API version 9 开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
ahjxliubao2's avatar
ahjxliubao2 已提交
5 6 7 8 9 10 11 12 13 14 15 16 17 18


Ability模块,提供对Ability生命周期、上下文环境等调用管理。


## 导入模块

  
```
import Ability from '@ohos.application.Ability';
```

## 属性

19 20
**系统能力**:以下各项对应的系统能力均为SystemCapability.Ability.AbilityRuntime.AbilityCore

Y
yuyaozhi 已提交
21
| 名称 | 参数类型 | 可读 | 可写 | 说明 | 
ahjxliubao2's avatar
ahjxliubao2 已提交
22
| -------- | -------- | -------- | -------- | -------- |
23 24 25
| context | [AbilityContext](js-apis-ability-context.md) | 是 | 否 | 上下文。 | 
| launchWant | [Want](js-apis-featureAbility.md#Want类型说明) | 是 | 否 | Ability启动时的参数。 | 
| lastRequestWant | [Want](js-apis-featureAbility.md#Want类型说明) | 是 | 否 | Ability最后请求时的参数。| 
ahjxliubao2's avatar
ahjxliubao2 已提交
26 27


Y
yuyaozhi 已提交
28
## Ability.onCreate
ahjxliubao2's avatar
ahjxliubao2 已提交
29

Y
yuyaozhi 已提交
30
onCreate(want: Want, param: AbilityConstant.LaunchParam): void;
ahjxliubao2's avatar
ahjxliubao2 已提交
31 32 33

Ability创建时回调,执行初始化业务逻辑操作。

Y
yuyaozhi 已提交
34 35 36 37 38
**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore

**参数:**

  | 参数名 | 类型 | 必填 | 说明 | 
ahjxliubao2's avatar
ahjxliubao2 已提交
39 40
  | -------- | -------- | -------- | -------- |
  | want | [Want](js-apis-featureAbility.md#Want类型说明) | 是 | 当前Ability的Want类型信息,包括ability名称、bundle名称等。 | 
Y
yuyaozhi 已提交
41
  | param | AbilityConstant.LaunchParam | 是 | 创建 ability、上次异常退出的原因信息。 | 
ahjxliubao2's avatar
ahjxliubao2 已提交
42

Y
yuyaozhi 已提交
43
**示例:**
ahjxliubao2's avatar
ahjxliubao2 已提交
44
    
Y
yuyaozhi 已提交
45
  ```js
ahjxliubao2's avatar
ahjxliubao2 已提交
46 47 48 49 50 51 52 53
  class myAbility extends Ability {
      onCreate(want, param) {
          console.log('onCreate, want:' + want.abilityName);
      }
  }
  ```


Y
yuyaozhi 已提交
54
## Ability.onWindowStageCreate
ahjxliubao2's avatar
ahjxliubao2 已提交
55 56 57 58 59

onWindowStageCreate(windowStage: window.WindowStage): void

当WindowStage创建后调用。

Y
yuyaozhi 已提交
60 61 62 63 64
**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore

**参数:**

  | 参数名 | 类型 | 必填 | 说明 | 
ahjxliubao2's avatar
ahjxliubao2 已提交
65 66 67
  | -------- | -------- | -------- | -------- |
  | windowStage | window.WindowStage | 是 | WindowStage相关信息。 | 

Y
yuyaozhi 已提交
68
**示例:**
ahjxliubao2's avatar
ahjxliubao2 已提交
69
    
Y
yuyaozhi 已提交
70
  ```js
ahjxliubao2's avatar
ahjxliubao2 已提交
71 72 73 74 75 76 77 78
  class myAbility extends Ability {
      onWindowStageCreate(windowStage) {
          console.log('onWindowStageCreate');
      }
  }
  ```


Y
yuyaozhi 已提交
79
## Ability.onWindowStageDestroy
ahjxliubao2's avatar
ahjxliubao2 已提交
80 81 82 83 84

onWindowStageDestroy(): void

当WindowStage销毁后调用。

Y
yuyaozhi 已提交
85 86 87
**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore

**示例:**
ahjxliubao2's avatar
ahjxliubao2 已提交
88
    
Y
yuyaozhi 已提交
89
  ```js
ahjxliubao2's avatar
ahjxliubao2 已提交
90 91 92 93 94 95 96 97
  class myAbility extends Ability {
      onWindowStageDestroy() {
          console.log('onWindowStageDestroy');
      }
  }
  ```


Y
yuyaozhi 已提交
98
## Ability.onWindowStageRestore
ahjxliubao2's avatar
ahjxliubao2 已提交
99 100 101 102 103

onWindowStageRestore(windowStage: window.WindowStage): void

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

Y
yuyaozhi 已提交
104 105 106 107 108
**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore

**参数:**

  | 参数名 | 类型 | 必填 | 说明 | 
ahjxliubao2's avatar
ahjxliubao2 已提交
109 110 111
  | -------- | -------- | -------- | -------- |
  | windowStage | window.WindowStage | 是 | WindowStage相关信息。 | 

Y
yuyaozhi 已提交
112
**示例:**
ahjxliubao2's avatar
ahjxliubao2 已提交
113
    
Y
yuyaozhi 已提交
114
  ```js
ahjxliubao2's avatar
ahjxliubao2 已提交
115 116 117 118 119 120 121 122
  class myAbility extends Ability {
      onWindowStageRestore(windowStage) {
          console.log('onWindowStageRestore');
      }
  }
  ```


Y
yuyaozhi 已提交
123
## Ability.onDestroy
ahjxliubao2's avatar
ahjxliubao2 已提交
124 125 126 127 128

onDestroy(): void;

Ability生命周期回调,在销毁时回调,执行资源清理等操作。

Y
yuyaozhi 已提交
129 130 131
**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore

**示例:**
ahjxliubao2's avatar
ahjxliubao2 已提交
132
    
Y
yuyaozhi 已提交
133
  ```js
ahjxliubao2's avatar
ahjxliubao2 已提交
134 135 136 137 138 139 140 141
  class myAbility extends Ability {
      onDestroy() {
          console.log('onDestroy');
      }
  }
  ```


Y
yuyaozhi 已提交
142
## Ability.onForeground
ahjxliubao2's avatar
ahjxliubao2 已提交
143 144 145 146 147

onForeground(): void;

Ability生命周期回调,当应用处于前台时触发。

Y
yuyaozhi 已提交
148 149 150
**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore

**示例:**
ahjxliubao2's avatar
ahjxliubao2 已提交
151
    
Y
yuyaozhi 已提交
152
  ```js
ahjxliubao2's avatar
ahjxliubao2 已提交
153 154 155 156 157 158 159 160
  class myAbility extends Ability {
      onForeground() {
          console.log('onForeground');
      }
  }
  ```


Y
yuyaozhi 已提交
161
## Ability.onBackground
ahjxliubao2's avatar
ahjxliubao2 已提交
162 163 164 165 166

onBackground(): void;

Ability生命周期回调,当应用处于后台时触发。

Y
yuyaozhi 已提交
167 168 169
**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore

**示例:**
ahjxliubao2's avatar
ahjxliubao2 已提交
170
    
Y
yuyaozhi 已提交
171
  ```js
ahjxliubao2's avatar
ahjxliubao2 已提交
172 173 174 175 176 177 178 179
  class myAbility extends Ability {
      onBackground() {
          console.log('onBackground');
      }
  }
  ```


Y
yuyaozhi 已提交
180
## Ability.onContinue
ahjxliubao2's avatar
ahjxliubao2 已提交
181

Y
yuyaozhi 已提交
182
onContinue(wantParam : {[key: string]: any}): AbilityConstant.OnContinueResult;
ahjxliubao2's avatar
ahjxliubao2 已提交
183 184 185

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

Y
yuyaozhi 已提交
186 187 188 189 190
**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore

**参数:**

  | 参数名 | 类型 | 必填 | 说明 | 
ahjxliubao2's avatar
ahjxliubao2 已提交
191 192 193
  | -------- | -------- | -------- | -------- |
  | wantParam | {[key: string]: any} | 是 | want相关参数。 | 

Y
yuyaozhi 已提交
194 195 196
**返回值:**

  | 类型 | 说明 | 
ahjxliubao2's avatar
ahjxliubao2 已提交
197
  | -------- | -------- |
Y
yuyaozhi 已提交
198
  | AbilityConstant.OnContinueResult | 继续的结果。 | 
ahjxliubao2's avatar
ahjxliubao2 已提交
199

Y
yuyaozhi 已提交
200
**示例:**
ahjxliubao2's avatar
ahjxliubao2 已提交
201
    
Y
yuyaozhi 已提交
202
  ```js
ahjxliubao2's avatar
ahjxliubao2 已提交
203 204 205 206 207 208 209 210 211 212
  class myAbility extends Ability {
      onContinue(wantParams) {
          console.log('onContinue');
          wantParams["myData"] = "my1234567";
          return true;
      }
  }
  ```


Y
yuyaozhi 已提交
213
## Ability.onNewWant
ahjxliubao2's avatar
ahjxliubao2 已提交
214 215 216 217 218

onNewWant(want: Want): void;

当ability的启动模式设置为单例时回调会被调用。

Y
yuyaozhi 已提交
219 220 221 222 223
**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore

**参数:**

  | 参数名 | 类型 | 必填 | 说明 | 
ahjxliubao2's avatar
ahjxliubao2 已提交
224 225 226
  | -------- | -------- | -------- | -------- |
  | want | [Want](js-apis-featureAbility.md#Want类型说明) | 是 | Want类型参数,如ability名称,包名等。 | 

Y
yuyaozhi 已提交
227
**示例:**
ahjxliubao2's avatar
ahjxliubao2 已提交
228
    
Y
yuyaozhi 已提交
229
  ```js
ahjxliubao2's avatar
ahjxliubao2 已提交
230 231 232 233 234 235 236 237
  class myAbility extends Ability {
      onNewWant(want) {
          console.log('onNewWant, want:' + want.abilityName);
      }
  }
  ```


Y
yuyaozhi 已提交
238
## Ability.onConfigurationUpdated
ahjxliubao2's avatar
ahjxliubao2 已提交
239 240 241 242 243

onConfigurationUpdated(config: Configuration): void;

当系统配置更新时调用。

Y
yuyaozhi 已提交
244 245 246 247 248
**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore

**参数:**

  | 参数名 | 类型 | 必填 | 说明 | 
ahjxliubao2's avatar
ahjxliubao2 已提交
249
  | -------- | -------- | -------- | -------- |
250
  | config | [Configuration](js-apis-configuration.md) | 是 | 表示需要更新的配置信息。 | 
ahjxliubao2's avatar
ahjxliubao2 已提交
251

Y
yuyaozhi 已提交
252
**示例:**
ahjxliubao2's avatar
ahjxliubao2 已提交
253
    
Y
yuyaozhi 已提交
254
  ```js
ahjxliubao2's avatar
ahjxliubao2 已提交
255 256 257 258 259 260 261 262 263 264 265 266 267
  class myAbility extends Ability {
      onConfigurationUpdated(config) {
          console.log('onConfigurationUpdated, config:' + JSON.stringify(config));
      }
  }
  ```


## Caller

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


Y
yuyaozhi 已提交
268
## Caller.call
ahjxliubao2's avatar
ahjxliubao2 已提交
269

Y
yuyaozhi 已提交
270
call(method: string, data: rpc.Sequenceable): Promise<void>;
ahjxliubao2's avatar
ahjxliubao2 已提交
271 272 273

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

Y
yuyaozhi 已提交
274 275 276 277 278
**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore

**参数:**

  | 参数名 | 类型 | 必填 | 说明 | 
ahjxliubao2's avatar
ahjxliubao2 已提交
279 280 281 282
  | -------- | -------- | -------- | -------- |
  | method | string | 是 | 约定的服务端注册事件字符串。 | 
  | data | rpc.Sequenceable | 是 | 由开发者实现的Sequenceable可序列化数据。 | 

Y
yuyaozhi 已提交
283 284 285
**返回值:**

  | 类型 | 说明 | 
ahjxliubao2's avatar
ahjxliubao2 已提交
286 287 288
  | -------- | -------- |
  | Promise<void> | Promise形式返回应答。 | 

Y
yuyaozhi 已提交
289
**示例:**
ahjxliubao2's avatar
ahjxliubao2 已提交
290
    
Y
yuyaozhi 已提交
291
  ```js
ahjxliubao2's avatar
ahjxliubao2 已提交
292 293
  import Ability from '@ohos.application.Ability';
  class MyMessageAble{ // 自定义的Sequenceable数据结构
ahjxliubao2's avatar
ahjxliubao2 已提交
294 295 296 297
      constructor(name, str) {
        this.name = name;
        this.str = str;
      }
ahjxliubao2's avatar
ahjxliubao2 已提交
298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314
      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;
  export default class MainAbility extends Ability {
      onWindowStageCreate(windowStage) {
ahjxliubao2's avatar
ahjxliubao2 已提交
315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331
        this.context.startAbilityByCall({
            bundleName: "com.example.myservice",
            abilityName: "com.example.myservice.MainAbility",
            deviceId: ""
        }).then((obj) => {
            caller = obj;
            let msg = new MyMessageAble(1, "world"); // 参考Sequenceable数据定义
            caller.call(method, msg)
                .then(() => {
                    console.log('Caller call() called');
                }).catch((e) => {
                console.log('Caller call() catch error ' + e);
            });
            console.log('Caller GetCaller Get ' + caller);
        }).catch((e) => {
            console.log('Caller GetCaller error ' + e);
        });
ahjxliubao2's avatar
ahjxliubao2 已提交
332
      }
ahjxliubao2's avatar
ahjxliubao2 已提交
333
      
ahjxliubao2's avatar
ahjxliubao2 已提交
334 335 336 337
  }
  ```


Y
yuyaozhi 已提交
338
## Caller.callWithResult
ahjxliubao2's avatar
ahjxliubao2 已提交
339

Y
yuyaozhi 已提交
340
callWithResult(method: string, data: rpc.Sequenceable): Promise<rpc.MessageParcel>;
ahjxliubao2's avatar
ahjxliubao2 已提交
341 342 343

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

Y
yuyaozhi 已提交
344 345 346 347 348
**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore

**参数:**

  | 参数名 | 类型 | 必填 | 说明 | 
ahjxliubao2's avatar
ahjxliubao2 已提交
349 350 351 352
  | -------- | -------- | -------- | -------- |
  | method | string | 是 | 约定的服务端注册事件字符串。 | 
  | data | rpc.Sequenceable | 是 | 由开发者实现的Sequenceable可序列化数据。 | 

Y
yuyaozhi 已提交
353 354 355
**返回值:**

  | 类型 | 说明 | 
ahjxliubao2's avatar
ahjxliubao2 已提交
356 357 358
  | -------- | -------- |
  | Promise<rpc.MessageParcel> | Promise形式返回通用组件服务端应答数据。 | 

Y
yuyaozhi 已提交
359
**示例:**
ahjxliubao2's avatar
ahjxliubao2 已提交
360
    
Y
yuyaozhi 已提交
361
  ```js
ahjxliubao2's avatar
ahjxliubao2 已提交
362 363
  import Ability from '@ohos.application.Ability';
  class MyMessageAble{
ahjxliubao2's avatar
ahjxliubao2 已提交
364 365 366 367
      constructor(name, str) {
        this.name = name;
        this.str = str;
      }
ahjxliubao2's avatar
ahjxliubao2 已提交
368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383
      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;
  export default class MainAbility extends Ability {
ahjxliubao2's avatar
ahjxliubao2 已提交
384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403
      onWindowStageCreate(windowStage) {
        this.context.startAbilityByCall({
            bundleName: "com.example.myservice",
            abilityName: "com.example.myservice.MainAbility",
            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((e) => {
                console.log('Caller callWithResult() catch error ' + e);
            });
            console.log('Caller GetCaller Get ' + caller);
        }).catch((e) => {
            console.log('Caller GetCaller error ' + e);
        });
ahjxliubao2's avatar
ahjxliubao2 已提交
404 405 406 407 408
      }
  }
  ```


Y
yuyaozhi 已提交
409
## Caller.release
ahjxliubao2's avatar
ahjxliubao2 已提交
410 411 412 413 414

release(): void;

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

Y
yuyaozhi 已提交
415 416 417
**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore

**示例:**
ahjxliubao2's avatar
ahjxliubao2 已提交
418
    
Y
yuyaozhi 已提交
419
  ```js
ahjxliubao2's avatar
ahjxliubao2 已提交
420 421 422 423
  import Ability from '@ohos.application.Ability';
  var caller;
  export default class MainAbility extends Ability {
      onWindowStageCreate(windowStage) {
ahjxliubao2's avatar
ahjxliubao2 已提交
424 425 426 427 428 429 430 431 432 433 434 435 436 437 438
        this.context.startAbilityByCall({
            bundleName: "com.example.myservice",
            abilityName: "com.example.myservice.MainAbility",
            deviceId: ""
        }).then((obj) => {
            caller = obj;
            try {
                caller.release();
            } catch (e) {
                console.log('Caller Release error ' + e);
            }
            console.log('Caller GetCaller Get ' + caller);
        }).catch((e) => {
            console.log('Caller GetCaller error ' + e);
        });
ahjxliubao2's avatar
ahjxliubao2 已提交
439 440 441 442 443
      }
  }
  ```


Y
yuyaozhi 已提交
444
## Caller.onRelease
ahjxliubao2's avatar
ahjxliubao2 已提交
445

Y
yuyaozhi 已提交
446
onRelease(callback: OnReleaseCallBack): void;
ahjxliubao2's avatar
ahjxliubao2 已提交
447 448 449

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

Y
yuyaozhi 已提交
450 451 452 453 454
**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore

**参数:**

  | 参数名 | 类型 | 必填 | 说明 | 
ahjxliubao2's avatar
ahjxliubao2 已提交
455
  | -------- | -------- | -------- | -------- |
Y
yuyaozhi 已提交
456
  | callback | OnReleaseCallBack | 是 | 返回onRelease回调结果。 | 
ahjxliubao2's avatar
ahjxliubao2 已提交
457

Y
yuyaozhi 已提交
458
**示例:**
ahjxliubao2's avatar
ahjxliubao2 已提交
459
    
Y
yuyaozhi 已提交
460
  ```js
ahjxliubao2's avatar
ahjxliubao2 已提交
461 462 463 464
  import Ability from '@ohos.application.Ability';
  var caller;
  export default class MainAbility extends Ability {
      onWindowStageCreate(windowStage) {
ahjxliubao2's avatar
ahjxliubao2 已提交
465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481
        this.context.startAbilityByCall({
            bundleName: "com.example.myservice",
            abilityName: "com.example.myservice.MainAbility",
            deviceId: ""
        }).then((obj) => {
            caller = obj;
            try {
                caller.onRelease((str) => {
                    console.log(' Caller OnRelease CallBack is called ' + str);
                });
            } catch (e) {
                console.log('Caller Release error ' + e);
            }
            console.log('Caller GetCaller Get ' + caller);
        }).catch((e) => {
            console.log('Caller GetCaller error ' + e);
        });
ahjxliubao2's avatar
ahjxliubao2 已提交
482 483 484 485 486 487 488 489 490 491
      }
  }
  ```


## Callee

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


Y
yuyaozhi 已提交
492
## Callee.on
ahjxliubao2's avatar
ahjxliubao2 已提交
493

Y
yuyaozhi 已提交
494
on(method: string, callback: CaleeCallBack): void;
ahjxliubao2's avatar
ahjxliubao2 已提交
495 496 497

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

Y
yuyaozhi 已提交
498 499 500 501 502
**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore

**参数:**

  | 参数名 | 类型 | 必填 | 说明 | 
ahjxliubao2's avatar
ahjxliubao2 已提交
503 504
  | -------- | -------- | -------- | -------- |
  | method | string | 是 | 与客户端约定的通知消息字符串。 | 
Y
yuyaozhi 已提交
505
  | callback | CaleeCallBack | 是 | 一个rpc.MessageParcel类型入参的js通知同步回调函数, 回调函数至少要返回一个空的rpc.Sequenceable数据对象, 其他视为函数执行错误。 | 
ahjxliubao2's avatar
ahjxliubao2 已提交
506

Y
yuyaozhi 已提交
507
**示例:**
ahjxliubao2's avatar
ahjxliubao2 已提交
508
    
Y
yuyaozhi 已提交
509
  ```js
ahjxliubao2's avatar
ahjxliubao2 已提交
510 511
  import Ability from '@ohos.application.Ability';
  class MyMessageAble{
ahjxliubao2's avatar
ahjxliubao2 已提交
512 513 514 515
      constructor(name, str) {
        this.name = name;
        this.str = str;
      }
ahjxliubao2's avatar
ahjxliubao2 已提交
516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544
      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(0, "");
      pdata.readSequenceable(msg);
      return new MyMessageAble(10, "Callee test");
  }
  export default class MainAbility extends Ability {
      onCreate(want, launchParam) {
          console.log('Callee onCreate is called');
          this.callee.on(method, funcCallBack);
      }
  }
  ```


Y
yuyaozhi 已提交
545
## Callee.off
ahjxliubao2's avatar
ahjxliubao2 已提交
546 547 548 549 550

off(method: string): void;

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

Y
yuyaozhi 已提交
551 552 553 554 555
**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore

**参数:**

  | 参数名 | 类型 | 必填 | 说明 | 
ahjxliubao2's avatar
ahjxliubao2 已提交
556 557 558
  | -------- | -------- | -------- | -------- |
  | method | string | 是 | 已注册的通知事件字符串。 | 

Y
yuyaozhi 已提交
559
**示例:**
ahjxliubao2's avatar
ahjxliubao2 已提交
560
    
Y
yuyaozhi 已提交
561
  ```js
ahjxliubao2's avatar
ahjxliubao2 已提交
562 563 564 565 566 567 568 569 570 571
  import Ability from '@ohos.application.Ability';
  var method = 'call_Function';
  export default class MainAbility extends Ability {
      onCreate(want, launchParam) {
          console.log('Callee onCreate is called');
          this.callee.off(method);
      }
  }
  ```

572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587
## OnReleaseCallBack

(msg: string): void;

| 名称 | 参数类型 | 可读 | 可写 | 说明 | 
| -------- | -------- | -------- | -------- | -------- |
| (msg: string) | function | 是 | 否 | 调用者注册的侦听器函数接口的原型。<br/>**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore | 
 

 ## CaleeCallBack

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

| 名称 | 参数类型 | 可读 | 可写 | 说明 | 
| -------- | -------- | -------- | -------- | -------- |
| (indata: rpc.MessageParcel) | rpc.Sequenceable | 是 | 否 | 被调用方注册的消息侦听器函数接口的原型。<br/>**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore |