プライマリ・コンテンツに移動
Oracle® Mobile Application Framework Oracle Mobile Application Frameworkでのモバイル・アプリケーションの開発
2.3.3
E82940-01
目次へ移動
目次

前
次

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

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

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

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

ライフサイクル・リスナーには、特定のアプリケーション・イベントに応じて実行するコードが含まれています。イベント通知の通信用に実装されたインタフェースに関する情報と、ライフサイクル・リスナーを作成する方法について確認してください。

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

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

  • oracle.adfmf.application.LifeCycleListener

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

    • activate()

    • deactivate()

    • start()

    • stop()

  • oracle.adfmf.feature.LifeCycleListener

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

    • activate()

    • deactivate()

ライフサイクル・リスナーを作成するには、適切なインタフェースを実装するJavaクラスを作成し、「MAFアプリケーションまたはアプリケーション機能のライフサイクル・リスナーの登録」の説明に従って、MAFアプリケーションの実装を登録します。

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

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

このイメージについては周囲のテキストで説明しています。

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

表13-1は、アプリケーションの起動時、シャットダウン時および休止時に、MAFがアプリケーション・ライフサイクル・メソッドを起動する具体的なタイミングについて説明しています。


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

メソッド タイミング いつコールされるか 使用方法

start

MAFアプリケーションがアプリケーション機能を完全にロードした後、ユーザーに最初のアプリケーション機能またはSpringboardを表示する直前にコールされます。これはブロック化コールです。

アプリケーションの処理が開始されたとき。

次の使用方法があります。

  • MAFアプリケーションの更新があるかどうかを確認する。

  • ローカル・データベースにデータをダウンロードするよう、リモート・サーバーにリクエストする。

stop

MAFアプリケーションがシャットダウンを開始するときにコールされます。

アプリケーションの処理が終了したとき。

次の使用方法があります。

  • 任意のリモート・サービスからログオフする。

  • アプリケーションが終了する前に、データの変更をサーバーにアップロードする。

activate

MAFアプリケーションを背景にある(休止)状態からアクティブ化するときにコールされます。これはブロック化コールです。

startメソッドがコールされた後。

次の使用方法があります。

  • キャッシュ・ストアを読み取り、再移入する。

  • Webサービス・リクエストを処理する。

  • 必要なリソースを取得する。

deactivate

MAFアプリケーションを非アクティブ化し、背景に移動(休止)するときにコールされます。これはブロック化コールです。

stopメソッドがコールされる前。

次の使用方法があります。

  • リストア可能な状態を書き込む。

  • データベース・カーソルとデータベース接続を閉じる。


表13-2は、機能のアクティブ化時および非アクティブ化時にMAFが機能ライフサイクル・メソッドを起動する具体的なタイミングについて説明しています。


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

メソッド タイミング いつコールされるか 使用方法

activate

現在のアプリケーション機能がアクティブ化される前にコールされます。

ユーザーがMAFアプリケーションの起動後に初めてアプリケーション機能を選択したとき、またはアプリケーション機能が再選択されたとき(つまり、フォアグラウンドに戻されたとき)にコールされます。

次の使用方法があります。

  • applicationScope変数を読み取る。

  • 最初のMAF AMXビューにおける現在の行を設定する。

deactivate

次のアプリケーション機能がアクティブ化される前、またはアプリケーション機能が終了する前にコールされます。

ユーザーが別のアプリケーション機能を選択したときにコールされます。

たとえば、deactivateイベントを使用して、applicationScope変数や、次のアプリケーション機能が使用するその他の状態情報を記述できます。


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

LifecycleEventsサンプル・アプリケーションは、アプリケーションおよび機能の両方のインタフェースを実装するリスナー・クラスの宣言を示しています。これらのリスナー・クラスはMAFアプリケーションのmaf-application.xmlファイルとmaf-feature.xmlファイルに登録されます。このサンプル・アプリケーションおよびその他のサンプル・アプリケーションの詳細は、「サンプルのMAFアプリケーション」を参照してください。

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

mafapplication.xmlファイルの概要エディタを使用してアプリケーション・ライフサイクル・リスナーを登録する手順と、maf-features.xmlファイルの概要エディタを使用して機能ライフサイクル・リスナーを登録する手順を使用してください。

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

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

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

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

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

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

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

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

  1. 「アプリケーション」ウィンドウで、ViewControllerプロジェクト、「アプリケーション・ソース」「META-INF」の順に展開します。
  2. maf-feature.xmlファイルをダブルクリックします。
  3. 「機能」リストで、機能ライフサイクル・リスナーを登録する機能を選択します。
  4. 「ライフサイクル・イベント・リスナー」フィールドに、oracle.adfmf.feature.LifeCycleListenerインタフェースを実装するJavaクラスを指定します。

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

ApplicationControllerプロジェクトのapplication.LifeCycleListenerImpl.javaクラス(maf-application.xmlファイルのlistener-class属性によって登録されます)は、ライフサイクル・リスナーを実装します。

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

<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ファイルにエントリを書き込みます。次の例は、「サンプルのMAFアプリケーション」で説明されているLifecycleEventsサンプル・アプリケーションのエントリを示しています。

<?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>