ややこしいです、Androidのこれ。
Y.A.M の 雑記帳: Android launchMode の違い
たくさん言葉がでてきます。
Activity
Task
Instance
調べてみるともっといろいろ関連がでてきます。
どんどん枝から枝が生えてきます。
Affinity
Stack
Intent
ProgrammingLife.jp: アクティビティとタスク (Android)
で、これらの詳細設定は、AndroidManifext.xml で設定したり、
以下、直接関係ありそうなのを抜粋。
android:alwaysRetainTaskState=["true" | "false"]
android:clearTaskOnLaunch=["true" | "false"]
android:excludeFromRecents=["true" | "false"]
android:launchMode=["multiple" | "singleTop" |
"singleTask" | "singleInstance"]
android:multiprocess=["true" | "false"]
android:noHistory=["true" | "false"]
android:parentActivityName="string"
android:stateNotNeeded=["true" | "false"]
android:taskAffinity="string"
あと、コード内で、Intent 経由で起動するとき
のオプションとしてもなんかいろいろあったり。
FLAG_ACTIVITY_BROUGHT_TO_FRONT
FLAG_ACTIVITY_CLEAR_TASK
FLAG_ACTIVITY_CLEAR_TOP
FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET
...
...
IntentのCategoryとExtraとFlagの一覧表を作ってみたよ - hyoromoの日記
で、もうこれだけ起動方法があったらわけわらなくなります。
基本的な設定からシンプルに進むとして便利なものがあります。
adb-tools を使いましょう。
$ adb -e shell dumpsys activity -h
Activity manager dump options:
[-a] [-c] [-h] [cmd] ...
cmd may be one of:
a[ctivities]: activity stack state
b[roadcasts] [PACKAGE_NAME] [history [-s]]: broadcast state
i[ntents] [PACKAGE_NAME]: pending intent state
p[rocesses] [PACKAGE_NAME]: process state
o[om]: out of memory management
prov[iders] [COMP_SPEC ...]: content provider state
provider [COMP_SPEC]: provider client-side state
s[ervices] [COMP_SPEC ...]: service state
service [COMP_SPEC]: service client-side state
package [PACKAGE_NAME]: all state related to given package
all: dump all activities
top: dump the top activity
cmd may also be a COMP_SPEC to dump activities.
COMP_SPEC may be a component name (com.foo/.myApp),
a partial substring in a component name, a
hex object identifier.
-a: include all available server state.
-c: include client state.
TaskとActivityの関係やその生き死にがリアルタイムに
わかりやすく確認できます。
$ watch -n 1 'adb -e shell dumpsys activity a | grep -A 1000 "Running activities" | grep -B 1000 "mFocusedActivity"'
しかし、いちいち、ややこしな、Androidて。
関連ワード: Android・ツール・ライブラリ・今さら聞けない・便利な設定・開発・Affinity・onNewIntent・SingleInstance・SingleTask・startActivityForResult