HarmonyOSにおけるStageモデル:AbilityStageコンテナの活用

AbilityStageの概要

HarmonyOSのアプリケーションアーキテクチャにおいて、AbilityStageはモジュール単位のコンポーネント管理を行う中心的な役割を担います。これはAndroidのApplicationクラスやiOSのAppDelegateに類似しており、特定のModule(HAP)内で使用されるすべてのAbility(画面または機能単位)を管理するためのエントリポイントです。

AbilityStageを通じて、開発者は以下のような機能を実装できます:

  • ライフサイクル制御:モジュールの初期化および終了時における処理を定義可能。
  • ページ間ナビゲーション:複数のAbility間の遷移を統一的に管理。
  • インテント処理:wantオブジェクトに基づく起動要求のカスタマイズ。
  • グローバル状態の初期化:共有リソースやデータストアのセットアップに利用可能。

各Moduleは1つのAbilityStageのみを持ち、srcEntryフィールドでそのエントリクラスを指定します。

カスタムAbilityStageの実装手順

新しいAbilityStageをプロジェクトに追加するには、以下のステップに従います。

  1. 対象Moduleのetsディレクトリ内に「stage」という名前のフォルダを作成します。
  2. その中にTypeScriptファイルMainStage.tsを作成します。
  3. コードエディタでファイルを開き、次のように基底クラスを継承したクラスを定義します。
import AbilityStage from '@ohos.app.ability.AbilityStage';
import Want from '@ohos.app.ability.Want';

export default class MainStage extends AbilityStage {
  onCreate(): void {
    console.info('MainStage onCreate is called');
    // モジュール初回読み込み時の初期化処理
  }

  onAcceptWant(want: Want): string | undefined {
    const abilityName = want?.elementName;
    if (abilityName) {
      console.debug(`Custom ability tag assigned for ${abilityName}`);
      return abilityName;
    }
  }
}

上記の例では、onCreateメソッドを利用してモジュール起動時にログ出力を行い、初期設定処理を想定しています。また、onAcceptWantは"specified"起動モードでのみ呼び出され、タスクビューに表示されるラベルをカスタマイズするために使用されます。

マニフェストファイルへの登録

作成したクラスを有効にするには、module.json5ファイルにエントリポイントを明示的に記述する必要があります。

{
  "module": {
    "name": "entry",
    "type": "entry",
    "srcEntry": "./ets/stage/MainStage.ts",
    "abilities": [
      {
        "name": "MainAbility",
        "launchType": "standard"
      }
    ]
  }
}

srcEntryプロパティが指すパスは、プロジェクトルートからの相対パスであることに注意してください。正しく設定しないと、ランタイム時にエラーが発生します。

主なコールバックメソッド

メソッド名 説明
onCreate() モジュール読み込み時に一度だけ呼び出される初期化フック
onAcceptWant(want: Want) specified起動タイプのAbilityが起動された際の表示名返却

タグ: HarmonyOS AbilityStage Stageモデル 鸿蒙开发 ArkTS

5月21日 02:00 投稿