生命周期發(fā)生變化時觸發(fā)相應(yīng)回調(diào)

2024-01-22 18:53 更新

AbilityLifecycleCallback模塊提供應(yīng)用上下文ApplicationContext的生命周期發(fā)生變化時觸發(fā)相應(yīng)回調(diào)的能力,包括onAbilityCreateonWindowStageCreate、onWindowStageActive、onWindowStageInactive、onWindowStageDestroy、onAbilityDestroy、onAbilityForeground、onAbilityBackground、onAbilityContinue方法。

說明

本模塊首批接口從API version 9 開始支持。后續(xù)版本的新增接口,采用上角標單獨標記接口的起始版本。

本模塊接口僅可在Stage模型下使用。

導(dǎo)入模塊

  1. import AbilityLifecycleCallback from '@ohos.app.ability.AbilityLifecycleCallback';

AbilityLifecycleCallback.onAbilityCreate

onAbilityCreate(ability: UIAbility): void;

注冊監(jiān)聽應(yīng)用上下文的生命周期后,在ability創(chuàng)建時觸發(fā)回調(diào)。

系統(tǒng)能力:SystemCapability.Ability.AbilityRuntime.AbilityCore

參數(shù):

參數(shù)名類型必填說明
abilityUIAbility當前Ability對象

示例:

  1. let abilityLifecycleCallback = {
  2. onAbilityCreate(ability){
  3. console.log('AbilityLifecycleCallback onAbilityCreate.');
  4. }
  5. };

AbilityLifecycleCallback.onWindowStageCreate

onWindowStageCreate(ability: UIAbility, windowStage: window.WindowStage): void;

注冊監(jiān)聽應(yīng)用上下文的生命周期后,在windowStage創(chuàng)建時觸發(fā)回調(diào)。

系統(tǒng)能力:SystemCapability.Ability.AbilityRuntime.AbilityCore

參數(shù):

參數(shù)名類型必填說明
abilityUIAbility當前Ability對象
windowStagewindow.WindowStage當前WindowStage對象

示例:

  1. let abilityLifecycleCallback = {
  2. onWindowStageCreate(ability, windowStage){
  3. console.log('AbilityLifecycleCallback onWindowStageCreate.');
  4. }
  5. };

AbilityLifecycleCallback.onWindowStageActive

onWindowStageActive(ability: UIAbility, windowStage: window.WindowStage): void;

注冊監(jiān)聽應(yīng)用上下文的生命周期后,在windowStage獲焦時觸發(fā)回調(diào)。

系統(tǒng)能力:SystemCapability.Ability.AbilityRuntime.AbilityCore

參數(shù):

參數(shù)名類型必填說明
abilityUIAbility當前Ability對象
windowStagewindow.WindowStage當前WindowStage對象

示例:

  1. let abilityLifecycleCallback = {
  2. onWindowStageActive(ability, windowStage){
  3. console.log('AbilityLifecycleCallback onWindowStageActive.');
  4. }
  5. };

AbilityLifecycleCallback.onWindowStageInactive

onWindowStageInactive(ability: UIAbility, windowStage: window.WindowStage): void;

注冊監(jiān)聽應(yīng)用上下文的生命周期后,在windowStage失焦時觸發(fā)回調(diào)。

系統(tǒng)能力:SystemCapability.Ability.AbilityRuntime.AbilityCore

參數(shù):

參數(shù)名類型必填說明
abilityUIAbility當前Ability對象
windowStagewindow.WindowStage當前WindowStage對象

示例:

  1. let abilityLifecycleCallback = {
  2. onWindowStageInactive(ability, windowStage){
  3. console.log('AbilityLifecycleCallback onWindowStageInactive.');
  4. }
  5. };

AbilityLifecycleCallback.onWindowStageDestroy

onWindowStageDestroy(ability: UIAbility, windowStage: window.WindowStage): void;

注冊監(jiān)聽應(yīng)用上下文的生命周期后,在windowStage銷毀時觸發(fā)回調(diào)。

系統(tǒng)能力:SystemCapability.Ability.AbilityRuntime.AbilityCore

參數(shù):

參數(shù)名類型必填說明
abilityUIAbility當前Ability對象
windowStagewindow.WindowStage當前WindowStage對象

示例:

  1. let abilityLifecycleCallback = {
  2. onWindowStageDestroy(ability, windowStage){
  3. console.log('AbilityLifecycleCallback onWindowStageDestroy.');
  4. }
  5. };

AbilityLifecycleCallback.onAbilityDestroy

onAbilityDestroy(ability: UIAbility): void;

注冊監(jiān)聽應(yīng)用上下文的生命周期后,在ability銷毀時觸發(fā)回調(diào)。

系統(tǒng)能力:SystemCapability.Ability.AbilityRuntime.AbilityCore

參數(shù):

參數(shù)名類型必填說明
abilityUIAbility當前Ability對象

示例:

  1. let abilityLifecycleCallback = {
  2. onAbilityDestroy(ability){
  3. console.log('AbilityLifecycleCallback onAbilityDestroy.');
  4. }
  5. };

AbilityLifecycleCallback.onAbilityForeground

onAbilityForeground(ability: UIAbility): void;

注冊監(jiān)聽應(yīng)用上下文的生命周期后,在ability的狀態(tài)從后臺轉(zhuǎn)到前臺時觸發(fā)回調(diào)。

系統(tǒng)能力:SystemCapability.Ability.AbilityRuntime.AbilityCore

參數(shù):

參數(shù)名類型必填說明
abilityUIAbility當前Ability對象

示例:

  1. let abilityLifecycleCallback = {
  2. onAbilityForeground(ability){
  3. console.log('AbilityLifecycleCallback onAbilityForeground.');
  4. }
  5. };

AbilityLifecycleCallback.onAbilityBackground

onAbilityBackground(ability: UIAbility): void;

注冊監(jiān)聽應(yīng)用上下文的生命周期后,在ability的狀態(tài)從前臺轉(zhuǎn)到后臺時觸發(fā)回調(diào)。

系統(tǒng)能力:SystemCapability.Ability.AbilityRuntime.AbilityCore

參數(shù):

參數(shù)名類型必填說明
abilityUIAbility當前Ability對象

示例:

  1. let abilityLifecycleCallback = {
  2. onAbilityBackground(ability){
  3. console.log('AbilityLifecycleCallback onAbilityBackground.');
  4. }
  5. };

AbilityLifecycleCallback.onAbilityContinue

onAbilityContinue(ability: UIAbility): void;

注冊監(jiān)聽應(yīng)用上下文的生命周期后,在ability遷移時觸發(fā)回調(diào)。

系統(tǒng)能力:SystemCapability.Ability.AbilityRuntime.AbilityCore

參數(shù):

參數(shù)名類型必填說明
abilityUIAbility當前Ability對象

示例:

  1. let abilityLifecycleCallback = {
  2. onAbilityContinue(ability){
  3. console.log('AbilityLifecycleCallback onAbilityContinue.');
  4. }
  5. };

AbilityLifecycleCallback使用

示例:

MyFirstAbility.ts

  1. import AbilityLifecycleCallback from '@ohos.app.ability.AbilityLifecycleCallback';
  2. import AbilityStage from '@ohos.app.ability.AbilityStage';
  3. import UIAbility from '@ohos.app.ability.UIAbility';
  4. // 聲明ability生命周期回調(diào),需配置所有回調(diào)后才可以在applicationContext注冊
  5. let abilityLifecycleCallback = {
  6. onAbilityCreate(ability){
  7. console.log('AbilityLifecycleCallback onAbilityCreate.');
  8. },
  9. onWindowStageCreate(ability, windowStage){
  10. console.log('AbilityLifecycleCallback onWindowStageCreate.');
  11. },
  12. onWindowStageActive(ability, windowStage){
  13. console.log('AbilityLifecycleCallback onWindowStageActive.');
  14. },
  15. onWindowStageInactive(ability, windowStage){
  16. console.log('AbilityLifecycleCallback onWindowStageInactive.');
  17. },
  18. onWindowStageDestroy(ability, windowStage){
  19. console.log('AbilityLifecycleCallback onWindowStageDestroy.');
  20. },
  21. onAbilityDestroy(ability){
  22. console.log('AbilityLifecycleCallback onAbilityDestroy.');
  23. },
  24. onAbilityForeground(ability){
  25. console.log('AbilityLifecycleCallback onAbilityForeground.');
  26. },
  27. onAbilityBackground(ability){
  28. console.log('AbilityLifecycleCallback onAbilityBackground.');
  29. },
  30. onAbilityContinue(ability){
  31. console.log('AbilityLifecycleCallback onAbilityContinue.');
  32. }
  33. };
  34. export default class MyFirstAbility extends UIAbility {
  35. onCreate() {
  36. console.log('MyAbilityStage onCreate');
  37. // 1.通過context屬性獲取applicationContext
  38. let applicationContext = this.context.getApplicationContext();
  39. // 2.通過applicationContext注冊監(jiān)聽應(yīng)用內(nèi)生命周期
  40. try {
  41. globalThis.lifecycleId = applicationContext.on('abilityLifecycle', abilityLifecycleCallback);
  42. console.log('registerAbilityLifecycleCallback lifecycleId: ${globalThis.lifecycleId}');
  43. } catch (paramError) {
  44. console.log('error: ' + paramError.code + ' ,' + paramError.message);
  45. }
  46. }
  47. }

MySecondAbility.ts

  1. import UIAbility from '@ohos.app.ability.UIAbility';
  2. export default class MySecondAbility extends UIAbility {
  3. onDestroy() {
  4. let applicationContext = this.context.getApplicationContext();
  5. // 3.通過applicationContext注銷監(jiān)聽應(yīng)用內(nèi)生命周期
  6. applicationContext.off('abilityLifecycle', globalThis.lifecycleId, (error) => {
  7. if (error.code != 0) {
  8. console.log('unregisterAbilityLifecycleCallback failed, error: ' + JSON.stringify(error));
  9. } else {
  10. console.log('unregisterAbilityLifecycleCallback success.');
  11. }
  12. });
  13. }
  14. }
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號