問題タブ [launchmode]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1068 参照

android - android singleTask アクティビティはルートとしてではありませんか?

起動モードに関するドキュメントを読んでいますが、理解できないことが1つあります。ドキュメントによると、singleTask アクティビティは常にスタックのルートです。

対照的に、「singleTask」および「singleInstance」アクティビティは、タスクを開始することしかできません。それらは常にアクティビティ スタックのルートにあります。さらに、デバイスが一度に保持できるアクティビティのインスタンスは 1 つだけです。そのようなタスクは 1 つだけです。

しかし、図 4のドキュメントのこの部分を見ると、アクティビティ 2 がアクティビティ Y を開始する (そのタスクをフォアグラウンドに置く) ときに、アクティビティ Y が既にタスクの先頭にあり、現在のタスクの先頭になることがわかります。ルートではなく、タスク。

このシミュレーション アプリでこのシナリオを試しましたが、singleTask アクティビティを作成すると、常に新しいタスクが作成されます。ただし、唯一のインスタンスが既に存在する場合は、このインスタンスより上のすべてのアクティビティが終了するため、唯一のインスタンスがルート (およびタスク内の唯一のアクティビティ) になる可能性があります。

アクティビティ Y は、どのようにしてアクティビティ X の上のタスクの一番上になるのでしょうか?

私が行方不明になっている他の理由はありますか?

PS: Task と back stack の違いもよくわかりません。

0 投票する
0 に答える
304 参照

android - 単一インスタンス アクティビティを含む Android アプリケーションを閉じる

私はアンドロイドアプリケーションを開発しました。要件によれば、データはすべてのアクティビティでサーバーから 1 回だけ取得し、アクティビティの状態を保存する必要があります。そのため、ユーザーがその画面から離れてそのアクティビティに再び到達すると、元のプレビューと同じプレビューが再び表示されます。Activityタグの次の属性でこれを達成しました。

Android:launchMode="singleInstance"
Android:alwaysRetainTaskState="true"

問題は、すべてのアクティビティがそのインスタンスを作成していることです。ユーザーが [戻る] ボタンを押したときに、ユーザーがアプリケーションを終了できるようにします。戻るボタンをホームボタンで上書きしています。これが私が使用しているコードです。

ただし、ユーザーがアプリ アイコンをもう一度クリックすると、起動画面から開始するのではなく、プレビューされていた画面からアプリケーションが再び開きます。私の場合、アプリケーションを閉じて、アクティビティを再度開始するための最良の解決策は何ですか。私を助けてください。私は助けが必要です。前もって感謝します。

0 投票する
1 に答える
1308 参照

android - アクティビティ フロー: アプリ アイコンをクリックすると onCreate MainActivity

私のアプリでは、MainActivity からアクティビティ B に移動します。次に、HOME ボタンを押してから、アプリ アイコンをもう一度クリックして最大化します。

アクティビティ B を onResuming する代わりに、MainActivity に戻ります。

私の AndroidManifest.xml では、アイコンをクリックすると MainActivity を起動するために通常のインテント フィルターを使用しているため、これは理にかなっています。

Facebook や Twitter などの人気のあるアプリをチェックしていましたが、Facebook フィードから友達ページに移動して [ホーム] ボタンを押したときに、この問題が発生していないようです。次に、アプリのアイコンをもう一度クリックすると、まだ友達のページに表示されます。

これは、アプリのアイコンをクリックしたときにのみアプリに影響を与えるようです。たとえば、MainActivity からアクティビティ B に移動し、HOME ボタンを押してから SQUARE ボタンを押して、バックグラウンドで実行されているすべてのアプリを表示し、バックグラウンドにあるアプリを選択して再度最大化すると、アプリは正しくアクティビティに戻ります。 B.

アプリのアイコンをクリックしたときに、代わりにonResumesアクティビティ Bが表示されるようにするにはどうすればよいですか?

0 投票する
3 に答える
8348 参照

android - Android アクティビティ起動モードとディープリンクの問題

私のアプリには 2 つのアクティビティがあります。アプリのルート アクティビティは MainActivity です。資格情報が見つからないか無効な場合、ユーザーは MainActivity の終了中に LoginActivity にリダイレクトされます。

メイン アクティビティの起動モードを singleTask に設定し、LoginActivity の内部フラグメントにいる場合 => アプリを最小化します -> ランチャー アイコンからアプリを起動します => MainActivity が起動します (singleTask アクティビティであるため)。 LoginActivity にリダイレクトしますが、もちろんスタック内の最初のフラグメントにリダイレクトします。

必要な動作 (最近のものから再起動したときに発生する) は、現在のアクティビティのインスタンスを保持し、LoginActivity のスタックに正しいフラグメントを表示することです。

もちろん、これは起動モードを singleTop に設定することで簡単に解決できますが、別の問題が発生します。ディープリンクのトラブル!

アプリがバックグラウンドで開いていて、singleTop モードのときにブラウザーまたは電子メールからリンクをクリックすると、アプリは転送アプリのサブタスクとして開かれます ([最近] をクリックすると、アプリが 2 回開かれていることがわかります - 1 回)以前は存在し、ブラウザ/電子メール内に含まれていた通常のインスタンスとして)。もちろん、これは非常に不便であり、起動モードを singleTask に設定することで解決できます。

この問題に関するヘルプをいただければ幸いです。

0 投票する
0 に答える
43 参照

android - すぐに呼び出されるフラグメントを使用してアクティビティから結果を取得する

私は持っていFragment A in Activity Aます。fromActivity Bを使用して新しいものを開始するとき。onActivityResultが開始された直後に呼び出されました。 onActivityResult を使用した結果コードは、 では 正しいが、では正しく表示されませんでした。startActivityForResultFragment AActivity BFragmentActivity A

問題はいくつかの起動モードによるものだと思います。私

そしてアクティビティB

フラグメントから startActivityForResult を使用してアクティビティを開き、スピナー項目を選択して結果を取得したいだけです。

0 投票する
2 に答える
3919 参照

android - Up ナビゲーションと singleTop 起動モード

アクティビティ A があり、ツールバー項目を押すと、startActivity(intent) を使用してアクティビティ B が開始されます。戻るボタンまたは上向きのナビゲーション アイコンを押すたびに、アプリが閉じます。親アクティビティで launchMode="singleTop" を使用しているためだと思います (これを使用しているのは、検索ビューと検索可能な構成があるためです。検索用にアクティビティの別のインスタンスを開始したくないためです) )。質問は次のとおりです。アプリを閉じずに、アップナビゲーションと戻るボタンの両方を使用して、子アクティビティ(B)から親アクティビティ(A)に戻るにはどうすればよいですか? 私はそれについて検索しましたが、onNewIntent() について何かを見つけました。これが私の解決策である場合、どのように適切に使用すればよいですか?


ここに私のマニフェストファイルがあります:


新しいアクティビティを開始する方法は次のとおりです。

0 投票する
1 に答える
387 参照

android - 戻るボタンを押したときに singleTask アクティビティが再現されないようにするにはどうすればよいですか?

アプリを起動せず、WebView を表示するだけの単純なランチャー アプリがあります。デフォルトのランチャーとして設定されています。このタブレットで他のアプリを使用していません。タブレットを再起動すると、このランチャーが期待どおりに起動します。私の問題は、デバイスの戻るボタンを押すと、アクティビティが破棄され、新しいアクティビティとして再度作成されることです。アクティビティが既に表示されているため、この動作のポイントがわかりません...ビューの起動モードはsingleTaskであるため、再作成されるのではなく、そのままの場所にとどまることが期待されます。これはどのように行うことができますか?ドキュメントを理解している限り、これは現在の方法ではなく、期待どおりに機能するはずです。

システムは、新しいタスクのルートにアクティビティを作成し、インテントをそこにルーティングします。ただし、アクティビティのインスタンスが既に存在する場合、システムは、新しいインスタンスを作成するのではなく、その onNewIntent() メソッドを呼び出すことによって、インテントを既存のインスタンスにルーティングします。 http://developer.android.com/guide/topics/manifest/activity-element.html#lmode

0 投票する
3 に答える
6906 参照

android - アプリ全体で各アクティビティのインスタンスを 1 つだけ保持する

アプリケーションで開始するすべての単一のインスタンスを保持したいと考えてActivityいます。launchModesingleTaskはオプションでしたが、1 つのみで機能していますActivity

私が欲しい

  • Activityインスタンスがなく、呼び出された場合に開始します。
  • その の他のインスタンスがActivity既に存在する場合、そのインスタンスはその の新しいインスタンスを作成せずに前面に表示されますActivity
  • このプロパティは、複数の に適用されますActivity
  • NoActivityは、常に履歴スタックの一番上にあることを保証しません。

今までの私の仕事:

私のケースには当てはまらない提案がたくさんあったので、他の人が同じ提案をしないように指摘したいと思います。

  • を に設定しましたlaunchModeが、これは が履歴スタックの一番上にあるsingleTop場合にのみ機能します。onNewIntent()は、履歴スタックの一番上にある場合にのみ呼び出されます。私の場合、スタック内の任意の位置にある可能性があります。したがって、これは機能していません。ActivityActivityActivity