Android開発アンチパターン

android

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を指定することで、画面の向きを固定することが可能。