本実験の趣旨
世間に出回っている多くのアプリの共有機能は、(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 件のコメント:
コメントを投稿