連載
» 2016年04月04日 05時00分 UPDATE

実業務でちゃんと使えるAndroidアプリ開発入門(2):知らずに作って大丈夫?Androidの基本的なライフサイクルイベント31選 (1/4)

本連載では、バージョンの違いに左右されないスタンダードなアーキテクチャで実業務で使えるAndroidアプリ開発のノウハウを提供していきます。今回は、Androidアプリ開発において必ず押さえておかなければならないライフサイクルイベントについて解説します。

[緒方聡,株式会社ゆめみ]

ライフサイクルイベントを覚えておくべき3つの理由

 本連載「実業務でちゃんと使えるAndroidアプリ開発入門」では、バージョンの違いに左右されないスタンダードなアーキテクチャで、セキュリティやパーミッション、テストのしやすさ、開発効率の向上などを考慮した、実業務で使えるAndroidアプリ開発のノウハウを提供していきます。

 前回の連載の今後を紹介し、アプリ間連携でさまざまなことができるACTION_OUTSIDEイベントの使い方を解説しました。

 今回はAndroidアプリ開発において必ず押さえておかなければならないライフサイクルイベントについて解説します。対象はActivityFragment、View、Applicationの4つです。

 また、ライフサイクルイベントを利用して、アプリの「状態」を保存/復元する方法についても解説します。

【1】必要な処理を必要なタイミングで行える

 ActivityFragmentのライフサイクルイベントは、それらを使用するに当たって一部は必ず使うことになります。普段から使っているライフサイクルイベント以外でも、「どのようなときに、どのようなイベントがコールバックされるのか」を押さえておくことで、必要な処理を必要なタイミングで行えるようになります。

【2】見た目や挙動に柔軟性を持たせることができる

 Viewのライフサイクルイベントを使いこなせれば、見た目や挙動に柔軟性を持たせることができます。動的にサイズが決定するViewは、元のViewに対し何らかの描画を重ねたい場合などに有効です。

【3】「状態」の保存と復元の仕組みを理解しておくとユーザー体験を向上できる

 また、今回解説するアプリの「状態」とは、「SharedPreferencesを用いるデータの永続化」ではなく、「アプリのライフサイクルイベントで渡される『savedInstanceState』を用いたアプリの状態の保存と復元」です。

 この「状態」(savedInstanceState)の保存と復元の仕組みを理解しておくと、アプリ内の画面遷移からの復帰やアプリのバックグラウンドからの復帰時などで、ユーザーに遷移前と同様の画面状態を表示できるようになるため、ユーザー体験が向上します。

「状態」の保存と復元を見て取れる――今回のサンプルアプリ

 今回もサンプルアプリがあります。以下はサンプルアプリを動作させた際の動画です。スクロールの状態や発番される番号が適切に保存/復元されていることが見て取れると思います。

 今回のサンプルアプリの動作について説明します。

android_jitsumu2_2.jpg

 アプリ画面の大半を占めるログのような文字列が並んでいる部分が、FragmentとViewが動的に追加/削除されるLinearLayoutです。画面下部に並んでいるボタンは、FragmentとViewを動的に追加/削除するためのButtonです。

 このアプリでは、Fragment、Viewが追加/削除される都度、またアプリが起動/終了/バックグラウンド化/フォアグラウンド化する都度、logcatにライフサイクルイベントを出力します。

android_jitsumu2_3.jpg

 このアプリだけのライフサイクルイベントを表示するには、「@IT」というタグでフィルタリングしてください。

 アプリの状態を復元するために、開発者向けオプションで「アクティビティを保持しない」にチェックを入れてください。

android_jitsumu2_4.jpg

 このチェックを入れた状態でアプリをバックグラウンド化すると、Activity#onDestroyが呼び出されてActivityが破棄されていることが確認できると思います。

 今回のサンプルアプリでは、復元するアプリの状態は、アプリ内部で持っているFragmentやViewの連番、FragmentやViewが表示しているテキスト、LinearLayoutのスクロール状態です。アプリの内部状態と表示状態の保存/復元ということになります。応用すれば、どのような状態でも保存/復元可能です。

サンプルアプリのダウンロード

 サンプルアプリは以下よりダウンロードしてください。

サンプルアプリのソースコード

 ソースコードは以下レポジトリからクローンしてください。今回は「No02」にプロジェクトがコミットされています。

       1|2|3|4 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。