Faster screen orientation change(日本語概要)
「Avoiding memory leaks(超訳)」*1、「Track memory allocations(日本語超訳)」*2に続く、メモリ3部作。全訳しても意味なさげなので、ソース見てということで、概要のみ。著者は同じくRomain Guyさん。
G1/ADPでキーボードを開いたり、SDKで[CTRL]-[F11]を押すと、画面の回転をするけど、このときアクティビティがリスタートするよね。この画面回転はAndroidのシステムが面倒を見てくれているけど、それを嫌って自力でインプリメントする人もいるが、短期的な解決にしかならないから、できるだけシステム任せにしてね。画面の再描画をする時に、ネットワークからデータを拾ってくる場合など、単に描画するだけではすまない場合は、ユーザの待ち時間を減らすために、onRetainNonConfigurationInstanceメソッド*3を使ってね。サンプルはPhotoStreamアプリ*4にあるから見てね。で、このメソッドでキャッシュするオブジェクトには十分注意してね。Activity/Contextに関連するオブジェクトを渡すと、盛大にメモリリークするから。View, Drawable, Adaptorもダメ。PhotoStreamではbitmapだけを慎重に切り出しているから、ソースを読んでね。また、ネットから画像を拾うみたいな、リロードすると時間がかかるものだけにしてね。
追記 2/24: あわあわ。元記事へのリンク貼り忘れてるじゃん。ごめんなさい。
⇒ http://android-developers.blogspot.com/2009/02/faster-screen-orientation-change.html
*1:http://d.hatena.ne.jp/androidzaurus/20090121/1232519066
*2:http://d.hatena.ne.jp/androidzaurus/20090213/1234485621
*3:http://d.android.com/reference/android/app/Activity.html#onRetainNonConfigurationInstance()
*4:http://code.google.com/p/apps-for-android/source/browse/trunk/Photostream/src/com/google/android/photostream/PhotostreamActivity.java#226