Android:Dialogとメモリ解放後の起動
Androidの2.xでDialogを使うとき、onCreateDialog()をオーバーライドして作成するのが正しいやり方っぽい。 その機構を使うことでDialogのリソース管理をActivityが行なってくれるようになり、アプリ側ではその解放処理を考える必要が無くなるからだ。 解放処理以外にも、例えば、ボタンがタップされた時にダイアログを開くとした時、自前でDialog#show()すると、連打された時、その分ダイアログが開いてしまうが、Activity#showDialog()の機構を利用すると、以前のDialogを閉じてから開いてくれるなど、排他処理も行なっている。 そして、Activity#removeDialog()というものがあって、それは管理しているDialogのリソースを解放してくれるらしいのだが、ここでワナ発見。 アプリが復帰する時、ダイアログは閉じておきたいと思い、Activity#onPause()でActivity#removeDialog()してみた。 しかしながら恐ろしいことに、メモリクリア後にアプリを再開しようとした時、Androidったら、表示する必要のないはずのダイアログをActivity#onCreateDialog()で作成しに行くじゃありませんか。 ・・・と思ったら、Android4.0だけかもしれない。 手元のAndroid2.3.5端末ではonCreateDialogを呼んでいないようだ。。 どちらにしても、Activity#onCreateDialog内の処理も、「メモリクリア後の再開」を考慮しておかなくちゃなのね・・・