プライマリ・コンテンツに移動
Oracle Enterprise Pack for Eclipse Oracle Mobile Application Framework (OEPE Edition)でのモバイル・アプリケーションの開発
リリース2.1.3
E67371-01
  目次へ移動
目次

前
 
次
 

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

この章では、MAFアプリケーション・エディタとMAF機能エディタを使用してモバイル・アプリケーションのSpringboardおよびナビゲーション・バーの表示動作を定義し、アプリケーション機能を埋め込むことでコンテンツを指定する方法について説明します。

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

11.1 MAFアプリケーションでのライフサイクル・イベント・リスナーの使用について

MAFランタイムでは、クラスが様々なLifeCycleListenerメソッドを実装して、ネイティブ・オペレーティング・システムのフレームワークからJVMに送信されるイベント通知を伝達します。これらのイベント通知は、モバイル・アプリケーションと埋込みのアプリケーション機能の両方の様々な状態(起動、停止または休止)について記載しています。MAFは、汎用的な起動メッセージを使用して、JVMでクラス関数を呼び出します。

MAFアプリケーション・エディタおよびMAF機能エディタでは、イベント発生時にMAFがコールするライフサイクル・リスナー・クラスを宣言的に追加できます。

モバイル・アプリケーションを作成すると、OEPEによって、アプリケーション用のLifeCycleListenerImpl.javaというライフサイクル・リスナー・クラスが作成されます。このファイルを使用して、特定のメソッドを実装できます(第25章「通知の有効化と使用方法」を参照)。Lifecycle Eventsサンプル・アプリケーションでは、MAFアプリケーション・エディタおよびMAF機能エディタの両方でイベント・リスナー・クラスを宣言する例が提供されます。

このサンプル・アプリケーションを操作するには、「ファイル」→「新規MAFサンプル」を選択し、LifecycleEventsを選択し、「終了」をクリックします。

11.1.1 モバイル・アプリケーションのイベント

アプリケーション・ライフサイクル・イベントを実行するには、モバイル・アプリケーションのライフサイクル・リスナー・クラスで、次の例に示すとおりLifeCycleListenerインタフェースのstartstopactivateおよびdeactivateメソッドを実装する必要があります。

package oracle.adfmf.application;
 
public interface LifeCycleListener
{
   void start();
   void stop();
   void activate();
   void deactivate();
}

注意:

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

次の例のAppListenerクラスでは、イベントを開始または停止するためにLifeCycleListenerメソッド・コールを使用します。また、アプリケーションを休止させる(deactivate)場合や、休止から戻す(activate)場合にも、これらのメソッド・コールを使用します。詳細は、第11.1.2項「モバイル・アプリケーション・イベントのタイミング」を参照してください。Oracle Mobile Application Framework Java APIリファレンスでLifeCycleListenerインタフェースも参照してください。

package some.package;
import oracle.adfmf.application.LifeCycleListener;
 
public class AppListener implements LifeCycleListener
{
    public AppListener()
    {
        super();
    }
    public void start()
    {
        // Perform application startup tasks...
    }
    public void stop()
    {
        // Perform tasks to stop the application...
    }
    public void activate()
    {
        // Perform appplication activation tasks...
    }
    public void deactivate()
    {
        // Perform application deactivation tasks...
    }
}

LifeCycleEventsサンプル・アプリケーション(付録G「サンプルのMAFアプリケーション」を参照)のアプリケーション・コントローラ・プロジェクトには、LifeCycleListenerインタフェースを実装するクラス(LifeCycleListenerImpl.java)があります。


注意:

起動ライフサイクル・コードを実行する前に、マネージドBeanとデータ・バインディングを初期化する必要があります。

11.1.2 モバイル・アプリケーション・イベントのタイミング

MAFは、モバイル・アプリケーションの起動時、シャットダウン時、休止時における特定のタイミングでアプリケーション・ライフサイクル・メソッドをコールします。表11-1は、これらのメソッドがコールされるタイミングと、各イベントに対応するObjective-Cを示しています。

表11-1 MAFライフサイクル・メソッド

メソッド タイミング いつコールされるか 使用方法 iOSアプリケーション委任メソッドとの関係

start

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

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

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

  • モバイル・アプリケーションの更新があるかどうかを確認する。

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

このイベントは特定のアプリケーション委任メソッドには対応していません。maf-application.xmlファイルとmaf-feature.xmlファイルのロード後、スプラッシュ画面が非表示になる直前にコールされます。

stop

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

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

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

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

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

アプリケーション委任のapplicationWillTerminate:メソッド内でコールされます。

activate

モバイル・アプリケーションをバックグラウンドにある(休止)状態からアクティブ化するときにコールされます。これはブロック化コールです。

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

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

アプリケーション委任のapplicationDidBecomeActive:メソッド内でコールされます。

deactivate

モバイル・アプリケーションを非アクティブ化し、バックグラウンドに移動する(休止)ときにコールされます。これはブロック化コールです。

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

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

アプリケーション委任のapplicationWillResignActive:メソッド内でコールされます。


11.1.3 アクティブ化および非アクティブ化メソッドを使用したアプリケーションの状態の保存

チェックポイントの適用によってアプリケーションの状態が保存されるため、ユーザーは、チェックポイント・エントリをactivateおよびdeactivateメソッドに追加することによって、休止前にアクティブであったモバイル・アプリケーションの最後のページを引き続き使用できます。ライフサイクル・リスナーは、activateクラスに追加されたチェックポイント・エントリを読み取り、アプリケーションが休止から戻った後、処理を再開できるようにします。ユーザーは再度ログインする必要がなくなるため、アプリケーションを中断することなく引き続き使用できます。休止中にアプリケーションが終了した場合、deactivateメソッドの一部として、チェックポイント情報をデータベースまたはデバイスのキャッシュ・ディレクトリに書き込むよう指定することによって、アプリケーションを再開できるようになります。アクティブ化中にこのチェックポイント情報を読み取ることによって、アプリケーションが同じページから再開されます。

11.2 アプリケーション機能ライフサイクル・リスナー・クラスについて

モバイル・アプリケーション機能ライフサイクル・リスナー・クラス(次の例のFeatureListenerPhoneListなど)では、LifeCycleListenerインタフェースのactivateおよびdeactivateメソッドを実装する必要があります。

package oracle.adfmf.feature;
public interface LifeCycleListner
{
   void activate();
   void deactivate();
}

次の例は、FeatureListenerPhoneListと呼ばれるクラスを示しています。このクラスでは、LifeCycleListenerを実装することで、activateおよびdeactivateメソッドを使用してアプリケーション機能を表示/非表示にします(表11-2を参照)。これらのメソッドでは、アプリケーション機能をアプリケーションの休止時に非表示にしたり、休止から戻ったときに表示したりできます。


注意:

Oracle Mobile Application Framework Java APIリファレンスで説明されているように、activateおよびdeactivateメソッドはブロック化コールです。これらのメソッドは、完全に実行されるまで、ユーザー・インタフェースを停止させるので、実行時間の長い処理がこれらのメソッドに含まれている場合は、別のアプリケーション機能のアクティブ化に遅延が生じます。アプリケーションにおいて実行時間の長い処理がアプリケーションの非アクティブ化の前に完了しなくてもよい場合は、その処理をこれらのメソッドに含めるのでなく、バックグラウンド・スレッドに含めてください。

package some.package;
import oracle.adfmf.feature.LifeCycleListener;
public class FeatureListenerPhoneList implements LifeCycleListener
{
    public FeatureListenerPhoneList()
    {
        super();
    }
    public void activate()
    {
        // Perform application activation tasks...
    }
    public void deactivate()
    {
        // Perform application deactivation tasks...
    }
}

ヒント:

LifeCycle Eventsサンプル・アプリケーションでは、Feature1Handler.javaおよびFeature2Handler.javaファイルにより、アプリケーション機能レベルでLifeCycleListenerインタフェースを使用する例が提供されています。これらのファイルは、ビュー・コントローラ・プロジェクトのApplication Sourcesフォルダ内にあります。

11.2.1 アプリケーション機能のライフサイクルでイベントをアクティブ化および非アクティブ化するタイミング

アプリケーション機能ライフサイクル・リスナー・クラスを実装することによって、アプリケーション機能で、applicationScope変数や、アプリケーション機能が非アクティブ化されたときに変更されたアプリケーション機能固有の変数に対する、すべてのデータ変更を自動的に取得できるようになります。表11-2は、アプリケーション機能に対してactivateイベントおよびdeactivateイベントを実行するタイミングを示しています。詳細は、Oracle Mobile Application Framework Java APIリファレンスを参照してください。

表11-2 アプリケーション機能に対するactivateおよびdeactivateメソッド

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

activate

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

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

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

  • applicationScope変数を読み取る。

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

deactivate

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

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

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


11.2.2 スライディング・ウィンドウの有効化

oracle.adfmf.framework.api.AdfmfSlidingWindowUtilitiesインタフェースをアプリケーション・ライフサイクル・リスナー(ALCL)に実装することにより、アプリケーション機能をスライディング・ウィンドウとして使用できます。このウィンドウは、ナビゲーション・バーまたはSpringboard内に表示される他のアプリケーション機能と同時に表示されます。スライディング・ウィンドウは、アプリケーション内に常に存在しているコンテンツ(グローバル・ツール・バー)を表示するために使用したり、一時的な(ポップアップ)コンテンツ(ヘルプ・ウィンドウなど)を表示するために使用したりできます。Springboardまたはナビゲーション・バー内でアプリケーション機能を表示する方法の詳細は、第5.1項「MAFアプリケーションの表示動作の概要」を参照してください。AdfmfSlidingWindowUtilities APIのメソッドを使用する方法の詳細は、Oracle Mobile Application Framework Java APIリファレンスを参照してください。