2012年1月12日木曜日

実験:configuration changeは、画面の無いActivityでも発生するのか

実験:configuration changeは、画面の無いActivityでも発生するのか

本実験の趣旨
世間に出回っている多くのアプリの共有機能は、(Serviceに対してではなく)Activityに対して共有するものある。
拙作プログラムのActivityは、ゴチャゴチャしており、これ以上何か機能を追加したくは無い。
このため、共有を受け付けるためだけのActivityを作成することにした。共有を受け付けるためだけであるため、画面を表示してはいけない。そこで、画面の無いActivityが必要になった。

画面の無いActivityとは、AndroidManifest.xmlにおいて、次の行を追加したものです。
android:theme="@android:style/Theme.Translucent.NoTitleBar"

画面が表示されない状態であるから、端末を縦位置から横位置へ、又は横位置から縦位置へ変更したとしても、configuration changeは発生しないと想定される。果たしてどうなのか。

結果
上記設定による画面を持たないActivityにおいて、端末の位置を変更させた場合、onRetainNonConfigurationInstanceメソッドが実行され、Activityは再起動する。
つまり、configuration changeが発生するということである。

追記(重要)
上記は、2012年1月時点の結果であった。
2012年5月1日に、この実験を行おうとした。onRetainNonConfigurationInstanceメソッドはdeprecatedであるとされていた。このため、onSaveInstanceStateメソッドでconfiguration changeの発生を捕捉しようとした。しかし、onSaveInstanceStateメソッドでは、画面の無いActivityのconfiguration changeを捕捉できなかった。

このように、1月時点と、5月時点での結果が異なっていたので、詳しく実験をしてみた。
参考:透明のActivityにはconfiguration changeが発生しない件

0 件のコメント:

コメントを投稿