
1.5に向けて、Android Developers Blogの更新頻度が高くなってきましたね。こういう情報はどんどん発信していってほしいです。
“Future-Proofing Your Apps” という記事で、Androidのバージョンが上がってもアプリがちゃんと動くようにするための「アンチパターン」(やってはいけないこと)が紹介されています。自分用メモ。
#1 内部APIを使う
サポートされていない内部APIを使うと、将来動く保証はない。
1.0,1.1には明るさ制御やBluetooth機能のON/OFFが許可なしに使えるというバグがあったが1.5で修正された。この結果、この内部APIを使っているアプリは動かなくなった。
人気の懐中電灯アプリ(たしかに私のiPhoneにも1つ入れている)のため、WindowManager.LayoutParamsにscreenBrightnessフィールドが追加された。
#2 Settingsを直接いじる
悪意をもってシステム設定を変えるようなアプリがあったので、1.5からはユーザに影響を与えるようなシステム設定(GPSのON/OFFやローミング設定など)が直接いじれなくなった。
その代わりに、設定画面を呼び出すIntentを発行して、ユーザに自分で変更させましょう、とのこと。android.provider.Settings.Secure を参照。
#3 レイアウトを複雑にしすぎる
ビュー階層が深さ10以上もしくは幅合計30以上になっているとクラッシュするようになった。これで過度に複雑なレイアウトになっていることがわかる。
FrameLayoutやTableLayoutといった高度なレイアウトを使って、ビュー階層を簡単化するよう意識すること。
#4 まずいハードウェア想定をする
1.5ではソフトキーボードが追加されたので、今後は物理的なキーボードのないデバイスも増えてくる。どちらでも動くように考慮する必要がある。
#5 無謀なローテーションをする
1.5以降は自動でローテーションするようになったので、自分でローテーションしていると予期せぬ挙動になるかもしれない。
加速度センサを使っているアプリは、画面の向きを固定しないと、シェイク動作で画面の向きがばたばたと切り替わってユーザをイライラさせるかも。
AndroidManifest.xmlのandroid:screenOrientationに、portraitかlandscapeを指定することで、画面の向きを固定することが可能。