世界を目指せ!Androidアプリ開発入門

第4回 Androidの肝,アクティビティ

この記事を読むのに必要な時間:およそ 2 分

それでは,エミュレータを使って動作を確認してみます。

アプリを起動すると,ddmsを起動するとログウィンドウに,以下のメッセージが表示されていることを確認してください。

図3 ログウィンドウにメッセージが表示される。

図3 ログウィンドウにメッセージが表示される。

ddmsのログウィンドウには,Android OSが出力するメッセージも含まれており,SkeletonActivityが出力したメッセージを探すのが面倒なので,メッセージをフィルターする機能を使って,表示メッセージを絞り込みます。

図4 フィルターの追加は,画面下のログペインの「+」をクリックする。⁠by Log Tag]には,コードで指定したTagを指定する。

図4 フィルターの追加は,画面下のログペインの「+」をクリックする。[by Log Tag]には,コードで指定したTagを指定する。

ddmsを使って動きを確認する

ddmsのログウィンドウには,"onResume"のメッセージが表示されて,アクティビティがonResumeのイベントを受け取って,実行されたことが確認できます。アクティビティが前面で動作していると,状態遷移図の「アクティビティ実行中」のところにあります。

では,この状態でホームボタンを押してください。すると,ddmsのログウィンドウには"onPause"のメッセージが表示され,状態遷移図の「onPause」に遷移したことが確認できます。この状態で,ホーム画面からSkeletonActivityをタップして起動すると,また,ddmsのログウィンドウに"onResume"と表示され「onResume」を通過し,再度「アクティビティ実行中」の状態になったことが確認できます。

少し複雑な遷移をしましたが,これは序の口です。

アクティビティが裏に周り「onPause」の状態で,他のアプリから大量のメモリが要求されると,Android OSが背面のアクティビティを強制終了する可能性があります。強制終了したアクティビティが復帰の時は「onResume」からではなく「onCreate」からとなり,一から起動された場合と同じ遷移になります。これ,アプリを開発するうえでは,大きなポイントになります。

リソース管理のコツは?

アクティビティが使うリソースは,この遷移を理解したうえで管理する必要があります。

アプリよって,リソースの管理方法は変わりますが,筆者が開発に関わっているNetaShareでは,

  • 1画面,1アクティビティとする
  • 強制終了される前提でリソースを扱う
  • アクティビティを跨いでリソースを使用しない

を心がけています。

筆者の経験では,この3点を心がけることで,アプリの実装がスッキリする印象を持っています。

T-mobile G1のようなハードキーボードを搭載した機種では,キーボードの開閉でアクティビティの再起動が行われます。日本には,ハードキーボードが搭載された端末が存在しませんが,世界を目指すためには,配慮が必要です。頭に入れておいて下さい。

次回は

Android OSには,アクティビティの強制終了に備えて,保持するデータを復帰する仕組みやアクティビティ間でデータをやり取りする仕組みが用意されています。この辺りを上手く使えば,無理なく効率良くアプリを実装できるので,次回,この内容を紹介します。

著者プロフィール

傍島康雄(そばじまやすお)

5月30日生まれ。

モバイルデバイスが大好物。それで動くアプリの開発に喜びを感じている。スマートフォン前夜のWindows Mobile,PalmOSのアプリに情熱を傾けていたが,最近は停滞気味でコードを書くよりも文章を書く機会が多くなっており,文章を書くのも,プログラミングと同じくらい奥深い作業だと感じている。

ブログ:http://yasuos.com/blog/