Windowsプログラマにとって,Androidプログラミングの最初の関所はActivity(アクティビティ)のライフサイクルだろう。「Activity(アクティビティ)はユーザー・インタフェース画面と考えてよい」と以前に「第305話 AndroidでHello Worldが表示された理由」で説明した。ただし,今回は,アクティビティは一つのプログラムと考えた方がわかりやすいと思う。

 AndroidでもプログラムをFinishメソッドで終わらせることができるのだが,Androidでは原則として,プログラムの状態はシステムで管理される。自分でいうものなんだが,これはちょっと妙な説明である。もちろん,Windowsでも,Mac OSでも,Linuxであっても,システムが各プログラムを管理するのは当たり前のことである。ただし,Androidの場合には,画面から消えて地下にもぐっているプロセスが,メモリーの都合でkillされたりするのだ。あんなに薄いAndroid端末のどこにもぐっているのかと思われるかもしれないが,スタックにプログラムが積み重なっているようなイメージを描くとわかりやすいかもしれない。

 自分の起動したプログラムが画面から完全に見えない状態でメモリーに存在し,ほかのプログラムの都合で強制的に終わってしまうというところが,Windowsプログラマにとってはなじめない。

 しかし,プログラムの状態が変わるときは,onXXメソッドが呼び出されるので,状態の変化に応じてプログラミングすることができる。Toastクラスを使って,各メソッドが呼び出されるときに文字列を表示して,プログラムの状態遷移を順に見ていく。

 前々回の「第307話 いろいろなコンポーネントを使ってみる」,前回の「第308話 レイアウトを理解する」と作成してきた四則演算をするCalcActivityのonXXメソッドに,Toast.makeText(this, "XX", Toast.LENGTH_LONG).show();を追加する。Toast.クラスではmakeTextでテキストを作成して,showで表示する。XXにはCreateやStartやResumeなどの文字列を入れる。Toast.LENGTH_LONGは表示する時間の設定である。LENGTH_LONGが長くで,LENGTH_SHORTが短くだ。

 アクティビティを起動したときは以下に示すように,Create,Start,Resumeの順に表示される。