Android携帯ゲームを作って世界に配信してみよう(番外編) ―― Androidアプリのライフサイクル
ここでは,連載 第3回の記事の補足として,Androidアプリの起動から終了までのライフサイクルと,各タイミングでの処理について説明する.(筆者)
エレキ系DIY・連載「Android携帯ゲームを作って世界に配信してみよう」 バック・ナンバ
第1回 まずは小さなアプリからこつこつ作ってみる
第2回 ゲームの基本構造とタップやフリックの処理を学ぶ
第3回 効果音の入れ方とデータの保存処理を学ぶ
画面を持つ一般的なAndroidアプリを作る際は,Activityクラスをベースに開発します.Activityとは,画面を管理するクラスのことです.もちろん,画面を持たないアプリは,Activityクラスを使わずに作ることができます.この,画面を管理するActivityは,実際に画面の表示を担うViewクラスを管理し,アプリに発生したイベントを受け取ることができます(図A).
図A ActivityクラスとViewクラス

それでは,ゲームのような一つのActivityを持つAndroidアプリが,起動から終了までのライフサイクルの間に,どのように動作するのかを見ていきます.
Androidアプリのライフサイクル上には,下記の三つのトピックがあります.
- アプリの起動~ゲームの開始
- ゲーム・ループでUIイベントを処理
- Homeボタンが押されたらアプリをバックグラウンドへ移動(再度フォアグラウンドに戻す)
●アプリの起動~ゲームの開始
アプリの起動からゲームの開始までの流れは,次の通りです.
1)Activityクラスの生成
Androidアプリが起動すると,メイン画面のActivityクラスが,OSにより生成されます.起動時に開く画面に対応するActivityクラスのパッケージ名とクラス名が,AndroidManifest.xmlで指定されています(リストA).今回のアプリであれば,Android OSは,com.spicysoft.sample.dribble.DribbleActivityクラスのインスタンスを生成します.
リストA Activityクラスの生成(AndroidManifest.xmlより抜粋)
AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest ... package="com.spicysoft.sample.dribble" ...> : <application ... > <activity android:name=".DribbleActivity" ...> : </activity> </application> </manifest> |
2)生成されたActivityクラスのonCreateメソッドがコールバックされる
Activityクラスが生成されると,ActivityクラスのonCreateメソッドが呼び出されます.ここでのポイントは,onCreateが複数回呼び出される可能性があるということです.例えば,デバイス(Android機器)を回転させて画面が縦向きから横向きになると,再度このメソッドが呼び出されます.また,アプリがバックグラウンドに行き,他のアプリがメモリを必要とする場合も,いったんActivityクラスは破棄され,再度生成される際に,onCreateメソッドが呼び出されることがあります.
今回のアプリでは,このonCreareメソッドが呼び出されるタイミングで,画面表示を管理するSurfaceViewを生成して,画面に設定しています.