ヘッダーをスキップ

Oracle® Mobile Application Framework Oracle Mobile Application Frameworkでのモバイル・アプリケーションの開発 2.1.1.0.0 E64867-01 |
| 目次

前 | 次 |

# 11 MAFアプリケーションでのライフサイクル・リスナーの使用方法

この章では、MAFアプリケーションまたはアプリケーション機能のイベントに応じて実行可能なコードを記述するための、MAFに用意されているライフサイクル・リスナーについて説明します。

この章の内容は次のとおりです。

- 第11.1項「MAFアプリケーションのライフサイクル・リスナーの概要」

- 11.2「MAFアプリケーションまたはアプリケーション機能のライフサイクル・リスナーの登録」

- 第11.3項「ライフサイクル・リスナー登録時の処理」

## 11.1 MAFアプリケーションのライフサイクル・リスナーの概要

ライフサイクル・リスナーは、アプリケーションの固有のイベントに応じて実行されるコードを記述するために便利な場所です。MAFは、アプリケーションまたはアプリケーション機能イベントに応じたコードを記述できるライフサイクル・リスナーを備えています。アプリケーション・ライフサイクル・リスナー・メソッドの標準的な実装としては、第17.2項「ローカルSQLiteデータベースの使用方法」に示されているように、アプリケーションの起動時にアプリケーションのデータベースを初期化するコードを記述するか、または第29.4.7項「実行時に名前付き接続の接続属性を更新する方法」に示されているように、URLパラメータからセキュリティ構成を更新します。

MAFは、イベント通知と通信するために実装できる次の2つのインタフェースを備えています。

- `oracle.adfmf.application.LifeCycleListener`

  このインタフェースには、アプリケーション・ライフサイクル・リスナーが実装する必要のある次のメソッドを指定します。

  - `activate()`

  - `deactivate()`

  - `start()`

  - `stop()`

- `oracle.adfmf.feature.LifeCycleListener`

  このインタフェースには、機能ライフサイクル・リスナーが実装する必要のある次のメソッドを指定します。

  - `activate()`

  - `deactivate()`

ライフサイクル・リスナーを作成するには、適切なインタフェースを実装するJavaクラスを作成し、第11.2項「MAFアプリケーションまたはアプリケーション機能のライフサイクル・リスナーの登録」に示されているように、MAFアプリケーションの実装を登録します。

新規作成するMAFアプリケーションは、`図11-1`に示されているように、アプリケーションのApplicationControllerプロジェクトに`application.LifeCycleListenerImpl.java`クラスをデフォルトで作成することによって、oracle.adfmf.application.LifeCycleListenerインタフェースを実装します。

図11-1 アプリケーション・ライフサイクル・リスナーの実装

アプリケーション・ライフサイクル・リスナーは、匿名ユーザーによって実行されます(つまり、そのリスナーのメソッドにはどのユーザーも関連付けられず、セキュアなWebサービスもコールされません)。

表11-1は、アプリケーションの起動時、シャットダウン時および休止時にアプリケーション・ライフサイクル・メソッドをMAFが起動する特定の時刻を示しています。

表11-1 MAFによるアプリケーション・ライフサイクル・メソッドの起動タイミング

メソッド | タイミング | いつコールされるか | 使用方法
--- | --- | --- | ---
`start` | MAFアプリケーションがアプリケーション機能を完全にロードした後、ユーザーに最初のアプリケーション機能またはSpringboardを表示する直前にコールされます。これはブロック化コールです。 | アプリケーションの処理が開始されたとき。 | 次の使用方法があります。 MAFアプリケーションの更新があるかどうかを確認する。 ローカル・データベースにデータをダウンロードするよう、リモート・サーバーにリクエストする。
`stop` | MAFアプリケーションがシャットダウンを開始するときにコールされます。 | アプリケーションの処理が終了したとき。 | 次の使用方法があります。 任意のリモート・サービスからログオフする。 アプリケーションが終了する前に、データの変更をサーバーにアップロードする。
`activate` | MAFアプリケーションを背景にある(休止)状態からアクティブ化するときにコールされます。これはブロック化コールです。 | `start`メソッドがコールされた後。 | 次の使用方法があります。 キャッシュ・ストアを読み取り、再移入する。 Webサービス・リクエストを処理する。 必要なリソースを取得する。
`deactivate` | MAFアプリケーションを非アクティブ化し、背景に移動(休止)するときにコールされます。これはブロック化コールです。 | `stop`メソッドがコールされる前。 | 次の使用方法があります。 リストア可能な状態を書き込む。 データベース・カーソルとデータベース接続を閉じる。

表11-2は、機能のアクティブ化および非アクティブ化時にMAFが機能ライフサイクル・メソッドを起動する特定のタイミングを示しています。

表11-2 MAFによる機能ライフサイクル・メソッドの起動のタイミング

メソッド | タイミング | いつコールされるか | 使用方法
--- | --- | --- | ---
`activate` | 現在のアプリケーション機能がアクティブ化される前にコールされます。 | ユーザーがMAFアプリケーションの起動後に初めてアプリケーション機能を選択したとき、またはアプリケーション機能が再選択されたとき(つまり、フォアグラウンドに戻されたとき)にコールされます。 | 次の使用方法があります。 `applicationScope`変数を読み取る。 最初のMAF AMXビューにおける現在の行を設定する。
`deactivate` | 次のアプリケーション機能がアクティブ化される前、またはアプリケーション機能が終了する前にコールされます。 | ユーザーが別のアプリケーション機能を選択したときにコールされます。 | たとえば、`deactivate`イベントを使用して、`applicationScope`変数や、次のアプリケーション機能が使用するその他の状態情報を記述できます。

`oracle.adfmf.application.LifeCycleListener`インタフェースおよび`oracle.adfmf.feature.LifeCycleListener`インタフェースの詳細は、Oracle Fusion Middleware Oracle Mobile Application Framework用Java APIリファレンスを参照してください。

LifecycleEventsサンプル・アプリケーションは、アプリケーション・インタフェースと機能インタフェースの両方を実装し、これらをMAFアプリケーションの`maf-application.xml`ファイルと`maf-feature.xml`ファイルに登録するリスナー・クラスの宣言を示しています。このサンプル・アプリケーションは、開発用コンピュータのJDeveloperインストール・ディレクトリ内にある次の場所の`PublicSamples.zip`ファイルに含まれています。

`jdev_install\jdeveloper\jdev\extensions\oracle.maf\Samples`

サンプル・アプリケーションの詳細は、付録G「サンプルのMAFアプリケーション」を参照してください。

## 11.2 MAFアプリケーションまたはアプリケーション機能のライフサイクル・リスナーの登録

アプリケーション・ライフサイクル・リスナーの登録は、`maf-application.xml`ファイルの概要エディタを使用して行い、機能ライフサイクル・リスナーの登録は、`maf-features.xml`ファイルの概要エディタを使用して行います。

アプリケーション・ライフサイクル・リスナーを登録するには:

1. 「アプリケーション」ウィンドウで、「アプリケーション・リソース」パネルを開きます。

2. 「アプリケーション・リソース」パネルでDescriptorsを展開し、ADF META-INFを展開します。

3. maf-application.xmlをダブルクリックします。

4. 「Application」ナビゲーション・タブで、`oracle.adfmf.application.LifeCycleListener`インタフェースを実装するJavaクラスをLifecycle Event Listenerフィールドに指定します。デフォルトでは、これは`application.LifeCycleListenerImpl`に設定されています。

   MAFに用意されているデフォルト実装と異なるカスタム・クラスを使用するシナリオは、別のところで使用するために配布されるJARライブラリにアプリケーション・ライフサイクル・リスナーをパッケージ化するときのためのものです。

アプリケーション機能ライフサイクル・リスナーを登録する手順:

1. 「Application」ウィンドウで、ViewControllerプロジェクトを展開し、「アプリケーション・ソース」およびMETA-INFを展開します。

2. maf-feature.xmlファイルをダブルクリックします。

3. 機能ライフサイクル・リスナーを登録する機能を「機能」リストで選択します。

4. 「ライフサイクル・イベント・リスナー」フィールドに、`oracle.adfmf.feature.LifeCycleListener`インタフェースを実装するJavaクラスを指定します。

## 11.3 ライフサイクル・リスナー登録時の処理

デフォルトでは、作成するMAFアプリケーションは、アプリケーションのApplicationControllerプロジェクトでの`application.LifeCycleListenerImpl.java`クラスの作成を介して、アプリケーション・ライフサイクル・リスナーを実装します。`maf-application.xml`ファイルの`listener-class`属性は、例11-1に示されているように、このクラスを登録します。

例11-1 maf-application.xmlでのアプリケーション・ライフサイクル・リスナーの登録

    <adfmf:application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"                    xmlns:adfmf="http://xmlns.oracle.com/adf/mf"
                       version="1.0" name="NewMAFapp" id="com.company.NewMAFapp"
        appControllerFolder="ApplicationController" listener-class="application.LifeCycleListenerImpl">
    ...
    </adfmf:application>

機能ライフサイクル・リスナーを登録すると、JDeveloperでは、`listener-class`属性用の`maf-feature.xml`ファイルにエントリを書き込みます。例11-2は、付録G「サンプルのMAFアプリケーション」に記載されているLifecycleEventsサンプル・アプリケーションのエントリを示しています。

例11-2 maf-feature.xmlでのアプリケーション機能ライフサイクル・リスナーの登録

    <?xml version="1.0" encoding="UTF-8" ?>
    <adfmf:features xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"                 xmlns:adfmf="http://xmlns.oracle.com/adf/mf">
      <adfmf:feature id="Feature1" name="Feature1" listener-class="mobile.Feature1Handler">
        <adfmf:description>This is a sample feature to show the feature lifecycle handlers.
        </adfmf:description>
        <adfmf:content id="Feature1.1">
          <adfmf:amx file="Feature1/feature1.amx"/>
        </adfmf:content>
      </adfmf:feature>
    ...
    </adfmf:features>