Materealオブジェクトのライフサイクル

このページでは、Materealで使われる主なオブジェクトのライフサイクルを状態遷移図とサンプルコードで説明しています。オブジェクトが状態遷移するときにはラベルと同名のステータスイベントが発生します。これらのイベントは、各オブジェクトにリスナを追加することで監視できます。

Entity

Robot robot = new NetTansor("http://192.168.1.100:8081");
 
// Code to use the robot here.
 
robot.dispose();

Matereal.getInstance().dispose()が呼ばれると全Entityが自動的にdisposeされるため、多くの場合、アプリケーション終了時に明示的にrobot.dispose()を呼ぶ必要はありません。

Service

Camera camera = new Camera();
camera.start();
 
// Code to get images from the camera here.
 
camera.addEventListener(listener);
camera.pause();
 
// ImageUpdateEvent won't be sent to the listener while the service is paused.
 
camera.resume();
 
camera.stop();
camera.start();
 
// The service can be re-started unless it is disposed.
 
camera.stop();
camera.dispose();

Serviceの子であるTaskは、外部からstop()を呼ばないでも勝手に終了することがあり、(Moveなら目的地に着いた場合など)このときSTOPPEDイベントの直後にFINISHEDイベントが発生します。

Workflow

状態遷移図はServiceと酷似していますが、Serviceよりも上位のレイヤーで実装されているのでServiceEventとは違う型のイベント(WorkflowEvent)が発生します。