Androidでアプリを開発する上で、最低限知っておくべきことをまとめました。
これらのことを理解して、設計、実装していくようにしましょう!!
■はじめに
Androidを開発する上で、下記のことを理解することが大切です。
・アプリケーションが動作するコンテキスト
・Androidフレームワークの特性
(アプリケーションへどんな影響を与えるか)
これらのことを考慮して設計、実装していきましょう!
では、実際にどんなことを気をつければということですが、
それが下記の内容になります。
■Android開発者が知るべき10のこと
1、ユーザデータを守る
電話、他のアプリケーションなど、別のActivityがいつでも割り込んできます。
そのとき、onSaveInstanceState() と onPause() メソッドが呼ばれ、
アプリケーションは終了させられます。
いつ終了しても、次に起動させたときに終了させられた状態で
データを復帰させるためにも、onSaveInstanceStateイベントで
データを保存するようにしましょう。
※onSaveInstanceStateは、インスタンスの状態を保存すべき
タイミングで呼び出されます。
このイベントでインスタンスを一時的に保存します。
2、生データでやりとりしない
データを利用するなら、標準規格の生データやデータベース経由で行うよりも、
Intentを使ってデータのやり取りしましょう。
データの保存は、Content Providerを利用します。
※intentという形式でActivity間の連携を取ります。
具体的には送り先とパラメータを詰めたIntentクラスを作成し、
それをstartActivityメソッドで送りつけます。
3、ユーザ操作を妨げない
ユーザ操作で問題になるのが、他のアクティブなアプリケーションを無視して、
自分のダイアログを表示してしまう場合です。
(バックグラウンドで動作するプロセス(サービス、ブロードキャストレシーバー)
によって表示されるケース)
これは、エミュレータ上でテストする際には、他のアプリケーションは
入っていない状態であるため、実機でテストしている際に発生します。
動作自体は無害かもしれませんが、場合によっては「表示されたダイアログが
消えない」などのことも発生することもありえます。
解決策として、「Notification」を使うことです。
Notificationを使うことにより、アプリケーションは、(バックグラウンドで
検知したイベントのため)現在のユーザー操作を遮ることなくステータスバーに
アイコンを表示して通知できます。
4、スレッドを使う
アプリケーションで長く時間がかかる処理を行い、長期間Activityが
応答を返さない際には”Application Not Responding”
(ANR)ダイアログが表示され、ユーザーに強制終了を確認します。
そのため、時間のかかる処理は別スレッドで実行することで、回避できます。
5、ひとつのActivityで何でもしようとしない
Activityとは、“Androidアプリの画面”に相当します。
そのため、Activityに処理や画面遷移を詰め込みすぎると、複雑になります。
できる限りシンプルにするため、Activityは分けるようにしましょう。
そうすることにより、扱いやすく、”backstack”モデルで履歴としてActivityを
管理しやすくなります。
6、テーマを活用する
UIをデザインする際には、テーマを使うようにしましょう。
テーマとは、スタイルをAndroidアプリ全体の初期値として使用する方法です。
Androidアプリには、スタイルというものを定義する事ができ、文字列などに
設定する色んな属性を一つのIDで使用できるものです。
7、多解像度に対応したUI
キャリアや環境により、サイズや解像度が異なります。
様々なサイズに対応するために、相対的にレイアウトを作成するようにしましょう。
多解像度対応には、drawableに9-patchなど適応する必要があります。
システムが自動的に最適なレイアウト、drawableを使い、どんなデバイス上でも
表示できるようにします。
8、ネットワークは遅い
3G接続のように高速なものもあれば、GSM、GPRSに代表される非3G接続もあります。
現実には、非3G接続のような遅いネットワークで使われることがほとんどです。
そのため、ネットワークは遅いことを前提に設計しましょう。
※エミュレータには、より遅いネットワーク速度をシミュレートする設定があります。
Eclipseの構成の「エミュレータ設定」タブ
またはエミュレータを始動するときのコマンドラインのオプションで調整して、
通信速度が遅い場合の挙動を確認してみてください。
9、特定のハードウェアに依存しない
キャリアによって、キーボードなどが異なります。
・キーボードが完全なqwerty配列を持つのか
・12キーしかないのか
・タッチスクリーンの有無
など、それぞれデバイスによって異なります。
アプリケーションを作る際はハードウェア上の仮定を無くし、
十分留意しましょう。
(例:特定のキーボード配列に依存するなど)
10、モバイル端末のバッテリーは有限
携帯端末であるため、バッテリーは限られています。
そのため、できるだけ消費を抑えることを考慮する必要があります。
特に消費するのが、下記のものになります。
・CPU使用率の高い重い処理
・ネットワークの通信
これらの使用を最小限に押さえることが、バッテリー消費削減の鍵に
なります。
たとえば、ネットワーク接続に失敗した場合、何度も接続を試みるよりも、
ユーザ操作によって再試行を促してください。
自動で行うと電力の著しい消費を招きます。
■参考サイト
・Android開発者が知るべき10のこと