BACK_KEYを押しまくってHOME画面に戻ることや、
Task Manager的なAppを使って、要はprocessをKILLすることを考えるだろう。
が、Multi Taskに疎い多くのUserは、Applicationを終了させるには
HOME_KEYを押下すればいいものだと思っている。
このせいで、Appの再起動が必要なPreferenceの変更や、
起動時に何か処理をしたい、なんていう場合に
考えなければいけないpatternが山のように増える。
これらを打破するひとつの実装方法として、
・launcherからの起動時
・HOME_KEY押下でHOME画面に抜け、そこからHOME_KEYを長押しし、
Taskの切り替えで遷移する場合
の2patternに対し、何がなんでもActivity Stackの先頭から
起動させる、という仕様を考えてみる。
stackの先頭となるActivityに、Manifestから
android:clearTaskOnLaunch="true"
を設定してやれば、launcherからの起動時に
積まれたstackを全消去して起動することができる。
が、Taskの切り替えから遷移してきた場合はそうはいかない。
FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY
が飛んできているからだ。
これは、起動時に積まれているstackを拾ってきて
前回と同じ画面を表示しなさい、というIntentのFlagである。
本当は、HOMEキーで終了した際には
processごとKILLしててくれるような実装ができればいいのだけれど、
知られているとおり、HOME_KEY押下のeventが拾えない以上、
その仕様で作ることは難しい。
とりあえずActivityのstackについての情報を集めて
模索しているのだけれど、未だ不明。
何か解ったら追記します。
追記1:
FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY
の他に、
FLAG_ACTIVITY_NEW_TASK
も混ざって飛んできてるっぽい。
何かの鍵になるだろうか。
・・・そもそもどこでFlagsの中身調べればいいんだ?
解決:
簡単すぎてあきれ返ってしまった。はぁ。
topとなるActivityの設定を、
android:clearTaskOnLaunch="true"
じゃなくて
android:launchMode="singleTask"
にすればいいだけ。
これだけで万事OK。
ところで今回の記事。
検索のために、ウザいくらいにカタカナ英語を
英語表記にしてみたのだけれど、やはり読みづらいですね。
が飛んできているからだ。
これは、起動時に積まれているstackを拾ってきて
前回と同じ画面を表示しなさい、というIntentのFlagである。
本当は、HOMEキーで終了した際には
processごとKILLしててくれるような実装ができればいいのだけれど、
知られているとおり、HOME_KEY押下のeventが拾えない以上、
その仕様で作ることは難しい。
とりあえずActivityのstackについての情報を集めて
模索しているのだけれど、未だ不明。
何か解ったら追記します。
追記1:
FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY
の他に、
FLAG_ACTIVITY_NEW_TASK
も混ざって飛んできてるっぽい。
何かの鍵になるだろうか。
・・・そもそもどこでFlagsの中身調べればいいんだ?
解決:
簡単すぎてあきれ返ってしまった。はぁ。
topとなるActivityの設定を、
android:clearTaskOnLaunch="true"
じゃなくて
android:launchMode="singleTask"
にすればいいだけ。
これだけで万事OK。
ところで今回の記事。
検索のために、ウザいくらいにカタカナ英語を
英語表記にしてみたのだけれど、やはり読みづらいですね。
0 コメント:
コメントを投稿