[解決済み] Androidの起動モードはsingleTaskかsingleInstanceか?[クローズド]
質問
メイン アクティビティとしてリストがあり、アイテムをクリックするとそのアイテムの詳細ビューが表示されるアプリがあります。また、メインのアクティビティと同様の検索アクティビティがあり、意図したとおりに動作します。
しかし、この検索アクティビティはスタック上に1つのインスタンスしか持たないようにしたいので、ユーザーは何度も検索でき、戻るをクリックすると、検索を始める前にいたビューに戻ります (以前の検索結果に戻るのではありません)。
singleTask と singelInstance の両方の起動モードは、私が望むことを行うように思われるので、この目的のためにどちらを使用すべきか、なぜ使用すべきかがわかりません。
どのように解決するのですか?
からの アプリケーションの基礎知識 のページを参照してください。
デフォルトでは、アプリケーションのすべてのアクティビティは アプリケーションのすべてのアクティビティは互いに親和性を持っています。 つまり、すべてのアクティビティが同じアクティビティに属することを つまり、すべてのアクティビティが同じ タスクに属することが望ましいということです。
シングルインスタンス(singleInstance")アクティビティは そのタスクにおける唯一のアクティビティとして単独で タスクの唯一のアクティビティとして単独で動作します。別のアクティビティを開始した場合、そのアクティビティは そのアクティビティは、そのアクティビティに関係なく、別のタスクに起動されます。 そのアクティビティは、その起動モードに関係なく、別のタスクに起動されます。 起動モードに関係なく、別のタスクに起動される。 FLAG_ACTIVITY_NEW_TASKがインテントにあったかのように。 が意図されているかのように。他のすべての点で singleInstance"モードは singleTask"と同じです。
上で述べたように、"singleTask のインスタンスが複数存在することはありません。 のインスタンスが 1 つ以上存在することはありません。 アクティビティの複数のインスタンスが存在することはなく、そのため、その インスタンスは、すべての新しい インテントを処理することが期待されます。シングルインスタンス活動 は、常にスタックの最上位にあります。 (タスクの唯一のアクティビティであるため タスクの唯一のアクティビティであるため)、常にインテントを処理する位置にあります。 インテントを処理する位置にあります。しかし アクティビティは、その上に他のアクティビティがある場合とない場合があります。 は、スタック内でその上に他のアクティビティがあってもなくてもかまいません。 スタック内に他のアクティビティがある場合もあります。もしそうであれば、それはインテントを処理する位置にありません。 インテントを処理する位置になく、インテントが削除されます。 インテントが削除されます。(インテントがドロップされても インテントがドロップされたとしても、その到着によって タスクがフォアグラウンドになり、そこに留まることになる)。 フォアグラウンドになり、そこにとどまることになります)。
どちらの起動モードでも、Activityのインスタンスが複数存在することはないため、この場合、戻るボタンを押すと、常に既存のActivityのインスタンスに移動します。
重要な違いは、"singleTask" は、何かが選択されたときに起動される新しい Activity のために新しいタスクを作成する必要がないことです。また、毎回戻るボタンでその新しいタスクを削除する必要もありません。
Activity スタックはすべて 1 人のユーザーのタスクに関連し、singleInstance が常にそれらを処理するのに有益であるような複雑な Intent 構造を持っていないようなので、singleTask 起動モードを使用することを提案したいと思います。
より詳細な情報のための良いブログ記事と、画像のクレジットを紹介します。 Android Activities and Tasks series - Android の UI コンポーネント モデル入門
関連
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み] Androidアプリケーションのアクティビティ間でデータを受け渡すにはどうすればよいですか?
-
[解決済み] Androidのローテーションでアクティビティを再開する
-
[解決済み] Bitmapオブジェクトに画像を読み込む際にOutOfMemoryが発生する問題
-
[解決済み] グリッドレイアウトにおけるフリングジェスチャーの検出
-
[解決済み] AndroidでstartActivityForResultを管理する方法
-
[解決済み] Androidのウェブビューでloadurlを呼び出すとブラウザが起動する
-
[解決済み】Android UserManager.isUserAGoat()の正しい使用例?)
-
[解決済み] SDカードからファイルを削除する方法を教えてください。
-
[解決済み] 通知をクリックした後にアプリケーションを開く
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] BottomSheetDialogFragmentの状態をexpandedに設定する。
-
[解決済み] Android Webview - キャッシュを完全に削除する
-
[解決済み] プログラムでソフトキーボードを開く
-
[解決済み] Android Navigation Architecture Component - 現在表示されているフラグメントを取得する
-
[解決済み] Android Studio - あいまいなメソッド呼び出し getClass()
-
[解決済み] AsyncTaskを複数回実行する
-
[解決済み] Android端末がHDPI画面かMDPI画面かを確認する方法は?
-
[解決済み] ProjectScopeServices に Factory タイプのサービスはありません。
-
[解決済み] PendingIntentの "requestCode "は何に使うのですか?
-
[解決済み] edittextのテキストがメールアドレスかどうかを確認するには?