「ナビゲーションメニュー」には、Activity1とActivity2を起動するための項目が2つあります。 たとえば、Activity1からActivity2を開始してから、「ナビゲーションメニュー」をタップしてActivity1を開きますが、これを実行すると、開いている別のインスタンスの代わりにActivity1の新しいインスタンスが取得されます。 Activity1のインスタンスが既に存在する場合はそれを開き、そうでない場合は新しいインスタンスを作成するにはどうすればよいですか?新しいアクティビティを作成するのではなく、すでに開いているアクティビティを開くにはどうすればよいですか?
答えて
FLAG_ACTIVITY_REORDER_TO_FRONT
を追加します。 Intent
にstartActivity()
と一緒に使用してください。
アクティビティのフラグをsingleTask
に設定し、onNewIntent(Intent intent)
を上書きして新しいインテントを取得します。
も、この気に異なるlaunchModesについてのチェックアウトthisManifest.xml
<activity android:name=".myActivity" android:label="@string/app_name"
android:launchMode="singleTop" />
であなたの活動にandroid:launchMode="singleTop"
を追加:上記の表に示すように
を、標準ではデフォルトのモードで、ありますほとんどのタイプのアクティビティには適切です。 SingleTopは多くの種類のアクティビティに共通の で、便利な起動モードです。他のモード - singleTaskとsingleInstanceは - 彼らはユーザーになじみのないことが そうな相互作用モデルにつながることから、ほとんどの 用途には適していませんし、他のほとんどの のアプリケーションは非常に異なっている
最も完全な答えはandroid:launchMode="singleTask"
を使用することであろうと、すでにそれに渡された新しいテントとActivity
のインスタンスがある場合は、それが呼び出されますので、あなたの機能に応じて、onNewIntentをオーバーライドします。
<activity
android:name=".MainActivity"
android:launchMode="singleTask"/>
なぜですか?
質問に基づきます。 2つのアクティビティActivity1 & はActivity2は、我々はActivity2を開くActivity1を開き、からActivity1
、があります。その後、内Activity2:
は、どのように私はそれがすでに存在する場合Activity1のインスタンスを開いていない場合は、新しいインスタンスを作成することができますか?現在のタスクがにされ、その後、活動を開始するときに、この活動を開始したタスクの実行がすでに存在し、場合は、代わりの新しいインスタンスを起動
singleTask
ためAndroidManifestActivity_launchModeで述べたように
正面。既存のインスタンスは、Activity.onNewIntent()への呼び出しを受け取ります...
あなたがsingleTask launchMode
について読めばさらに、意図クラスの下で、それはすでにIntent.FLAG_ACTIVITY_BROUGHT_TO_FRONT
を使用して、手動での意図を設定するには、通常、アプリケーションコードによって設定されていません。
FLAG_ACTIVITY_BROUGHT_TO_FRONT
int型FLAG_ACTIVITY_BROUGHT_TO_FRONT で述べたように、このフラグは通常、アプリケーションのコードで設定されていませんが、singleTaskモード用launchModeのマニュアルに記載されているシステムによって自動的に設定します。
したがって、singleTask launchMode
を使用することにより、あなたはそこにあなたのアプリケーションのインスタンスが1つだけで、あなたがCommonsWareによって示唆されているように、あなたのActivity2を呼び出し、すべての活動であなたの意図にFLAG_ACTIVITY_BROUGHT_TO_FRONT
フラグを追加する必要がないことを確認してください。
ここでandroid:launchMode="singleTop"
をweakwireとすると、linkは彼自身が明確に述べています。
"singleTop" ...たとえば、 "singleTop"アクティビティの既存のインスタンスがターゲットタスクにあり、スタックの一番上にない場合、またはスタックトップの場合スタックの新しいインスタンスが作成され、スタックにプッシュされます。言い換えれば
、我々はしたくないものですいくつかのシナリオではActivity1の複数のインスタンスで終わるでしょう。
最終的には、回答自体に何も寄与しない編集回答が大好きな方は、実際にスタックオーバーフロー評判を増やしたい場合は、本当の質問にお答えください。
- 1. ポップアップウィンドウでアクティビティを開くにはどうすればよいですか?
- 2. Wikitudeクライアントトラッカーアクティビティでアクティビティを開くにはどうすればよいですか?
- 3. アンドロイドのダイアログボックスを使用して新しいアクティビティを開くにはどうすればいいですか?
- 4. クリック可能なアイテムの新しいアクティビティを開くにはどうすればよいですか?
- 5. Androidのアクティビティ - Androidで別のアクティビティを開くにはどうすればよいですか?
- 6. 新しいアクティビティを開始するときに「アンドロイドヒストリー」にいくつかのアクティビティが開いています
- 7. 親アクティビティを失うことなく新しいアクティビティを開く
- 8. 新しいウィンドウを開くことなくウェブページを開くにはどうすればよいですか?
- 9. すでに開いているアクティビティを復元するにはどうすればよいですか?
- 10. AndroidでPostExecuteから正しくアクティビティを開始するにはどうすればよいですか?
- 11. Android Espresso:いくつかのアクティビティでテストスイートを作成するにはどうすればよいですか?
- 12. Recyclerビューで新しいアクティビティを開く
- 13. ImageButtonで新しいアクティビティを開く
- 14. 同じタブで新しいアクティビティを開始するにはどうすればよいですか?
- 15. アクティビティの開始時にdrawerLayoutを開くにはどうすればよいですか?
- 16. Twitterの主なアクティビティをAndroidでプログラムで開くにはどうすればいいですか?
- 17. アクティビティを開始するにはどうすればよいですか?
- 18. 別のアクティビティでインテントを通じてフラグメントクラスを開くにはどうすればいいですか?
- 19. メインのアクティビティではないアクティビティに直接Androidアプリを開き、後でメインのアクティビティに移動するにはどうすればよいですか?
- 20. 現在のアクティビティを終了し、別のアクティビティを開始するにはどうすればよいですか?
- 21. Android Studioでプロジェクトエクスプローラから新しいAndroidアクティビティを作成するにはどうすればよいですか?
- 22. フラグメントマネージャで開いているアクティビティ正しく別のアクティビティ
- 23. リンクをクリックして特定のアクティビティを開くにはどうすればよいですか?
- 24. Androidアプリケーションに、同じアクティビティの新しいインスタンスをシングルトップモードで開くようにするにはどうすればいいですか
- 25. 開いているアクティビティをすべて終了し、Javaクラスから新しいアクティビティを開く方法
- 26. 通知をクリックした後に特定のアクティビティを開くにはどうすればよいですか?
- 27. 新しいアクティビティを開くKotlinでボタンを作成する方法(Android Studio)
- 28. いつでも開いているアプリ、最後に開いたアクティビティを開く
- 29. Vue.js:既に開いているタブで外部リンクを開くにはどうすればよいですか?
- 30. IntelliJから新しいアクティビティを作成するにはどうすればよいですか?
ありがとうございます!それは私のように動作します)) – TFR
しかし、これを使用して、oncreate()メソッドが呼び出されていない?新しいデータを渡してアクティビティをリフレッシュしたい場合はどうすればいいですか? Onresume()はそこにいますが、同じことをする他の方法がありますか? –
@ JD.com:どちらの場合でも 'onCreate()'または 'onNewIntent()'を呼び出す必要があります。 – CommonsWare