1

私は本当に少し混乱しています。そう言われると

singleInstance起動モードのアクティビティはシングルトン パターンを使用し、そのインスタンスは新しいタスクのルート アクティビティになります。

new taskと表示されている場合、起動アクティビティが新しいスレッドで実行されるということですか? または、Android システムはフラグを使用して、メイン スレッド内のデータ構造を使用してアクティビティ ナビゲーションを内部的に制御します。

4

2 に答える 2

1

singleInstance launchmode のアクティビティはシングルトン パターンを使用します

これは誤解を招きます。起動モードが何であれ、アクティビティは決してシングルトンと見なされるべきではありません。確かに、を使用する場合、Activity のインスタンスは 1 つしかありsingleInstanceませんが、通常の Activity ライフサイクルは依然として発生し、Activity への静的参照を保持することは安全ではありません。

新しいタスクとは、起動アクティビティが新しいスレッドで実行されることを意味しますか?

いいえ、すべてのアクティビティはメイン スレッドにあり、そこでのみ操作する必要があります。task混乱は、この場合のスレッド化を指していない単語の使用に由来します。アクティビティのグループを指します。公式ドキュメントには、この件に関する有用なリファレンスがあります。

于 2014-08-07T18:18:09.960 に答える
1

起動アクティビティが新しいスレッドで実行されるということですか???

いいえ、違います。

アプリのすべてのアクティビティ (およびサービスとレシーバー) は、メイン スレッドと呼ばれる単一のスレッドで実行されます。

Android のスレッド モデルについては、こちらの記事を参照してください。

于 2014-08-07T18:14:21.790 に答える