Xletのライフサイクル

本ページでは、Xletのライフサイクルについて説明する。

 

XletはApplication Managerによる制御で以下の5状態のいずれかを取る。
  • Unloaded:未ロード状態
  • Loaded: Xletインタフェースを実装したクラスのインスタンスが生成された状態
  • Paused: Xlet.initXlet()メソッドが呼び出し完了直後、あるいはXlet.pauseXletメソッドの呼び出し後
  • Active: Xlet.startXlet()メソッドの呼び出し後
  • Destroyed: Xlet.destroyXlet()メソッドの呼び出し後
XletのライフサイクルはBD-J Titleのそれと密接に結びついており、典型的には以下の形態を採る。
  • あるTitleを選択した際、そのTitleに属するXletがApplication Managerを通じて自動クラスロードされる(Loaded状態に遷移)
  • Application Managerからの制御により、Active状態やPaused状態に遷移
  • 別のTitleに切り替わる際 *1 、Application Managerを通じて実行中のXletは停止・破棄される(Destroyed状態に遷移)
XletとTitleの関連付けはBD-J Object fileで定義し、あるBD-J Titleで実行するXletはそのBD-J Titleに対応するBD-J Object file内のapplicationManagementTableで宣言しておく必要がある。

 

また、javax.tv.xlet.XletContextを通じて、Xletは自身の状態遷移をApplication Managerに要求することもできる。例えばXletContext.notifyDestroyed()で自己終了の要求となる。なお、XletContextはinitXlet()メソッドで渡されるものを用いる。

 

以下はライフサイクル制御のバリエーションである。

自動起動(AUTOSTART)

Title選択時にクラスロードだけでなく自動起動(AUTOSTART)することが可能である。クラスロードするだけ(PRESENT)か自動起動(AUTOSTART)にするかはapplicationManagementTableのcontrolCodeで指定する。

他のXletからの制御(AppProxy)

org.dvb.application.AppProxyを使うことで、他のXletからApplication Managerを通じて、起動も含めXletのライフサイクルを制御することが可能である。なお、自分が起動したもの以外のXletを制御する場合、署名つきでなければならない。

Titleを跨いだXletの継続実行(Title unbound application)

BDメディアを跨いだXletの継続実行(Disc unbound application])

Xletによる自己終了(notifyDestroyed)

上述のようにXlet自身からApplication Managerに対して自己終了を要求することができる。この場合、destroyXlet()は呼び出されないため、リソース開放等は完了しておく必要がある。

 


関連する項目

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です