Android LaunchMode "Singletask"について
-
12-12-2019 - |
質問
私はAndroid開発者ガイドとインターネットの一部の記事を読み、まだsingleTask
launchmode
について混乱しています。例を取ります:
ユーザーApp1を起動し、Android新しいタスクを起動します。 App1がフォロー順にアクティビティを作成すると仮定する:
ActivityA -> ActivityB -> ActivityC
.
Task1がどのように見えるかです。
ユーザーのボタンをクリックしてApp2を起動することを選択したので、Task1はバックグラウンドで、Androidを起動する新しいタスクを起動します.ask2、ユーザーは何かを行います:
ActivityD -> ActivityE
.
ActivityE
を参照して、ActivityB
を起動しようとし、ActivityB
にはLaunchMode singleTask
があります。
私が理解することは、Task1が再びフロントエンドにやってくることであり、Task2はバックグラウンドに行きます。そしてTask1は今こそこんなところです:
ActivityA -> ActivityB
.
これは:
-
ActivityC
はTask1から削除され、ActivityBはトップアクティビティになります。 -
ユーザーが「戻る」ボタンをクリックすると、Task2 の
ActivityA
に戻るのではなく、Task1のActivityE
に入ります。私は正しい?
ありがとう
解決
ActivityCはTask1から削除され、ActivityBはトップアクティビティになります。
YESあなたは正しいです...
ActivityCは、ActivityCのOnDestroyメソッドから削除されます。したがって、ユーザーがタスク1を再起動すると、ActivityBはActivityCではなく表示されます。
2つのタスク(プロジェクト)を作成し、同じ@ sendspace をアップロードしました。それを試してみてください...
Androids Documentation それは
"" Singletask "の活動はそのタスクの一部になることを可能にします。それは常にその課題の根本にありますが、他の活動(必然的に「標準」および「シングルトロップ」活動)をその中に起動することができますタスク。 "
これは、ホームボタンをクリックすると、単一のタスクアクティビティ上のすべてのアクティビティ(CaseがActivityBの場合)がスタックから削除されます。
サンプルアプリでは、プロジェクト「Androidtest」を実行してログ内のホームボタンをクリックした場合は、2番目のアクティビティが一時停止され、もう一度起動したときに表示されます。最近のアプリの「第2の活動は破壊されます。
シングルインスタンスアクティビティ(ActivityB)を上回っているSenarioでは、バックスタックから削除されず、別のアプリケーションはこのアクティビティ(ActivityB)を要求していない可能性があり、意図をドロップできます。しかし、これは、ユーザーがホームボタンを押す必要があるが、バックスタックの現在のタスク\アプリを別のタスク\アプリに移動することができるので、起こっている可能性が高くなりました。
したがって警告
他のモード - シングレートとシングルインスタンス - ほとんどのアプリケーションには適していません。強い>
あなたの疑問を解決することを願っています。
他のヒント
あなたは右に聞こえます。
テストしないのはなぜそれをテストしません。
説明の説明モードを説明できるこのアプリもあります:
https://play.google.com/Store / Apps / Details?ID= com.novoda.demos.activityLaunchMode
ソースは https://github.com/gnorsilva/activities-launchmode-demo