|
Unofficial "CLDC 1.0 + MIDP 1.0" API Reference. (日本語版) |
|||||||||
| 前のパッケージ 次のパッケージ | フレームあり フレームなし | |||||||||
参照先:
説明
| クラスの概要 | |
|---|---|
| MIDlet | MIDlet は MID Profile アプリケーション自身を示します。 |
| 例外の概要 | |
|---|---|
| MIDletStateChangeException | 要求された MIDlet の状態移行が失敗あるいは拒否されたことを示す例外です。 |
MIDlet パッケージは Mobile Information Device Profile アプリケーションとアプリケーションを実行する環境(ランタイム環境)とのインタフェースを定義します。
Mobile Information Device Profile のアプリケーションを MIDlet と言います。
アプリケーションのライフサイクルは、以下のように MIDlet とその環境間のプロトコルを定義します。
MIDlet の状態の簡潔な定義
以下の定義が MIDlet ライフサイクルの中で使用されます。
アプリケーションマネージャ -
各 MIDlet を管理する、デバイスに含まれるソフトウェア操作環境の一部です。
これは状態変化時に MIDlet に指示を与えます。
MIDlet -
デバイス上の MID Profile アプリケーション。MIDlet はアプリケーションマネージャーによって作成、開始、休止、破棄されます。
MIDlet アプリケーションは MIDlet API を通して他の MIDlet に対する情報を得ることはできません。
MIDlet の状態 -
MIDlet の状態は MIDlet インタフェースの定義に従って変更することができます。
さらに詳細なアプリケーションの状態は、そのアプリケーションのみに通知されます。
MIDlet を搭載するマシンは、アプリケーションの振る舞いが一貫しており、ユーザーが期待するようにどのようなデバイスにおいてもほぼ同等に動作できることを目指して設計されています。
各 MIDlet の有効な状態は以下の通りです。
|
状態名 |
説明 |
|
ロード後 |
注釈: この状態は |
|
休止 |
|
|
アクティブ |
|
|
破棄 |
注釈:この状態は1度だけ遷移します。 |
MIDlet の状態の遷移は次の通りです。

MIDlet を実行する典型的な順序は以下の通りです。
|
アプリケーションマネージャー |
|
|
アプリケーションマネージャーは |
|
|
アプリケーションマネージャーは |
|
|
アプリケーションマネージャーは、 |
|
|
アプリケーションマネージャーは、アクティブな |
|
|
アプリケーションマネージャーは |
アプリケーションを終了させるための準備、例えばユーザーに関する情報の保存などを行います。 |
pauseApp - MIDlet は一時的なリソースを全て開放し、受動的な状態へ移るように処理を記述します。
- startAppMIDlet が必要とするリソースを確保し、サービスを開始する処理を記述します。
destroyApp - MIDlet は全ての状態を保存し、全てのリソースを開放する処理を記述します。
notifyDestroyed - MIDlet がクリーンナップを行ったことをアプリケーションマネージャーに伝えるために呼び出します。
notifyPaused - MIDlet がサービスの休止を求めていることをアプリケーションマネージャーに伝えるために呼び出します。
resumeRequest - MIDlet がサービスの再開を求めていることをアプリケーションマネージャーに伝えるために呼び出します。
getAppProperty - MIDlet から指定された名前のプロパティを返します。
アプリケーションは MIDlet のメソッドの実行時に競合が発生しないような措置を取るべきです。
それぞれのメソッドは、それ自身を同時に実行することを必要としている可能性があるため、他のメソッドは状態遷移中に衝突を回避しなければなりません。
これは、Java 仮想マシンの速度を簡単に測定するために MIDlet ライフサイクルを使用する例です。
import javax.microedition.midlet.*;
/**
* この MIDlet の例は、簡単なタイミングテストを実行します。アプリケー
* ションマネージャーによって開始される際に、テストを行うための別の
* スレッドを生成します。このスレッドは、いつテストを終了するかを、
* アプリケーションマネージャーに通知します。
* startApp、pauseApp、destroyApp の各メソッドを使用します
* ので、それぞれの要求をどのように扱って移行するかを確かめてください。
*/
public class MethodTimes extends MIDlet implements Runnable {
// タイミングテストを行うスレッド
Thread thread;
/**
* Start は、タイミングテストを行うスレッドを作成します。
* このメソッドはディスパッチャーが止まるのを避けるために直ちに処理を戻すべきです。
*/
public void startApp() {
thread = new Thread(this);
thread.start();
}
/**
* Pause は、スレッドフィールドをクリアしスレッドを停止します。
* 停止後に処理を再開する場合は最初からやり直します。
*/
public void pauseApp() {
thread = null;
}
/**
* Destroy は必要なクリーンナップ処理を全て行います。
* スレッドは停止され、結果は処理しません。
*/
public void destroyApp(boolean unconditional) {
thread = null;
}
/**
* タイミングテストを行います。
* 単純に 1000 回メソッド呼ぶのにかかる時間を計ります。
* スレッドが既にカレントのスレッドでない場合は直ちに終了します。
*/
public void run() {
Thread curr = Thread.currentThread(); // Remember which thread is current
long start = System.currentTimeMillis();
for (int i = 0; i < 100000 && thread != curr; i++) {
empty();
}
long end = System.currentTimeMillis();
// タイミングテストが終了したか否かを判定します。
// 終了している場合は何もせずに戻ります。
// そしてアプリケーションの残りの部分は実行しません。
if (thread != curr) {
return;
}
long millis = end - start;
// ここにこの例の範囲の外に経過時間を報告する処理が入ります。
// 全てが終わったらクリーンナップして終了します。
destroyApp(true);
notifyDestroyed();
}
/**
* 空のメソッド。
*/
void empty() {
}
}
|
Unofficial "CLDC 1.0 + MIDP 1.0" API Reference. (日本語版) |
|||||||||
| 前のパッケージ 次のパッケージ | フレームあり フレームなし | |||||||||
