Oracle Enterprise Pack for Eclipse Oracle Mobile Application Framework (OEPE Edition)でのモバイル・アプリケーションの開発 リリース2.1.3 E67371-01 |
|
![]() 前 |
![]() 次 |
この章では、MAFアプリケーション・エディタとMAF機能エディタを使用してモバイル・アプリケーションのSpringboardおよびナビゲーション・バーの表示動作を定義し、アプリケーション機能を埋め込むことでコンテンツを指定する方法について説明します。
この章の内容は次のとおりです。
MAFランタイムでは、クラスが様々なLifeCycleListener
メソッドを実装して、ネイティブ・オペレーティング・システムのフレームワークからJVMに送信されるイベント通知を伝達します。これらのイベント通知は、モバイル・アプリケーションと埋込みのアプリケーション機能の両方の様々な状態(起動、停止または休止)について記載しています。MAFは、汎用的な起動メッセージを使用して、JVMでクラス関数を呼び出します。
MAFアプリケーション・エディタおよびMAF機能エディタでは、イベント発生時にMAFがコールするライフサイクル・リスナー・クラスを宣言的に追加できます。
モバイル・アプリケーションを作成すると、OEPEによって、アプリケーション用のLifeCycleListenerImpl.java
というライフサイクル・リスナー・クラスが作成されます。このファイルを使用して、特定のメソッドを実装できます(第25章「通知の有効化と使用方法」を参照)。Lifecycle Eventsサンプル・アプリケーションでは、MAFアプリケーション・エディタおよびMAF機能エディタの両方でイベント・リスナー・クラスを宣言する例が提供されます。
このサンプル・アプリケーションを操作するには、「ファイル」→「新規MAFサンプル」を選択し、LifecycleEventsを選択し、「終了」をクリックします。
アプリケーション・ライフサイクル・イベントを実行するには、モバイル・アプリケーションのライフサイクル・リスナー・クラスで、次の例に示すとおりLifeCycleListener
インタフェースのstart
、stop
、activate
および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とデータ・バインディングを初期化する必要があります。 |
MAFは、モバイル・アプリケーションの起動時、シャットダウン時、休止時における特定のタイミングでアプリケーション・ライフサイクル・メソッドをコールします。表11-1は、これらのメソッドがコールされるタイミングと、各イベントに対応するObjective-Cを示しています。
表11-1 MAFライフサイクル・メソッド
メソッド | タイミング | いつコールされるか | 使用方法 | iOSアプリケーション委任メソッドとの関係 |
---|---|---|---|---|
|
モバイル・アプリケーションがアプリケーション機能を完全にロードした後、ユーザーに最初のアプリケーション機能またはSpringboardを表示する直前にコールされます。これはブロック化コールです。 |
アプリケーションの処理が開始されたとき。 |
次の使用方法があります。
|
このイベントは特定のアプリケーション委任メソッドには対応していません。 |
|
モバイル・アプリケーションがシャットダウンを開始するときにコールされます。 |
アプリケーションの処理が終了したとき。 |
次の使用方法があります。
|
アプリケーション委任の |
|
モバイル・アプリケーションをバックグラウンドにある(休止)状態からアクティブ化するときにコールされます。これはブロック化コールです。 |
|
次の使用方法があります。
|
アプリケーション委任の |
|
モバイル・アプリケーションを非アクティブ化し、バックグラウンドに移動する(休止)ときにコールされます。これはブロック化コールです。 |
|
次の使用方法があります。
|
アプリケーション委任の |
チェックポイントの適用によってアプリケーションの状態が保存されるため、ユーザーは、チェックポイント・エントリをactivate
およびdeactivate
メソッドに追加することによって、休止前にアクティブであったモバイル・アプリケーションの最後のページを引き続き使用できます。ライフサイクル・リスナーは、activate
クラスに追加されたチェックポイント・エントリを読み取り、アプリケーションが休止から戻った後、処理を再開できるようにします。ユーザーは再度ログインする必要がなくなるため、アプリケーションを中断することなく引き続き使用できます。休止中にアプリケーションが終了した場合、deactivate
メソッドの一部として、チェックポイント情報をデータベースまたはデバイスのキャッシュ・ディレクトリに書き込むよう指定することによって、アプリケーションを再開できるようになります。アクティブ化中にこのチェックポイント情報を読み取ることによって、アプリケーションが同じページから再開されます。
モバイル・アプリケーション機能ライフサイクル・リスナー・クラス(次の例の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フォルダ内にあります。 |
アプリケーション機能ライフサイクル・リスナー・クラスを実装することによって、アプリケーション機能で、applicationScope
変数や、アプリケーション機能が非アクティブ化されたときに変更されたアプリケーション機能固有の変数に対する、すべてのデータ変更を自動的に取得できるようになります。表11-2は、アプリケーション機能に対してactivateイベントおよびdeactivateイベントを実行するタイミングを示しています。詳細は、Oracle Mobile Application Framework Java APIリファレンスを参照してください。
表11-2 アプリケーション機能に対するactivateおよびdeactivateメソッド
メソッド | タイミング | いつコールされるか | 使用方法 |
---|---|---|---|
|
現在のアプリケーション機能がアクティブ化される前にコールされます。 |
ユーザーがモバイル・アプリケーションの起動後に初めてアプリケーション機能を選択したとき、またはアプリケーション機能が再選択されたとき(つまり、フォアグラウンドに戻されたとき)にコールされます。 |
次の使用方法があります。
|
|
次のアプリケーション機能がアクティブ化される前、またはアプリケーション機能が終了する前にコールされます。 |
ユーザーが別のアプリケーション機能を選択したときにコールされます。 |
たとえば、 |
oracle.adfmf.framework.api.AdfmfSlidingWindowUtilities
インタフェースをアプリケーション・ライフサイクル・リスナー(ALCL)に実装することにより、アプリケーション機能をスライディング・ウィンドウとして使用できます。このウィンドウは、ナビゲーション・バーまたはSpringboard内に表示される他のアプリケーション機能と同時に表示されます。スライディング・ウィンドウは、アプリケーション内に常に存在しているコンテンツ(グローバル・ツール・バー)を表示するために使用したり、一時的な(ポップアップ)コンテンツ(ヘルプ・ウィンドウなど)を表示するために使用したりできます。Springboardまたはナビゲーション・バー内でアプリケーション機能を表示する方法の詳細は、第5.1項「MAFアプリケーションの表示動作の概要」を参照してください。AdfmfSlidingWindowUtilities
APIのメソッドを使用する方法の詳細は、Oracle Mobile Application Framework Java APIリファレンスを参照してください。