問題タブ [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.
android - 個別の taskAffinity を持つ 2 つのランチャー アイコンを持つ Android アプリ
2 つのランチャー アイコンと 2 つの異なるアクティビティを備えたアプリがあります。マニフェスト ファイルは次のようになります。
MyActivity
インストール後に開くデフォルトの画面にしたいので、使用し.category.DEFAULT
ました。
action.MAIN
とcategory.LAUNCHER
は、2 つの個別のランチャー アイコンを表示します (1 はMyActivity
、1 はMySettings
)。
問題:を開くMyActivity
と、MySettings
画面も開いてしまいます。各ランチャー アイコンで、対応するアクティビティのみを開きます。問題を解決するために各アクティビティに使用taskAffinity
しましたが、機能しませんでした。動作させるには、私の場合はできないtaskAffinity
フラグでアクティビティを開始する必要があると思います(両方ともアクティビティを起動します)。Intent.FLAG_ACTIVITY_NEW_TASK
私も使用しようとしましandroid:launchMode="singleTask"
たが、どちらも機能しませんでした。
各ランチャー アイコンを作成してその Activity のみを開くにはどうすればよいですか?
更新:申し訳ありませんが、MyActivity
開いていないことに気付きMySettings
ました。MyActivity
には UI がなかったため、 のような空白の画面が表示されましたMySettings
。taskAffinity
正しく動作します。UIを非表示にするために追加android:theme="@android:style/Theme.NoDisplay"
しました。MyActivity
android - singleTask 起動モードのアクティビティとバック スタックでの位置
タスクとバックスタックに関するAndroid の公式オンラインガイドには、自己矛盾する情報があります。誰かが私がそれを理解するのを手伝ってくれるなら、私は感謝します。
まず、次の記述があります。
スタック内のアクティビティは再配置されることはなく、スタックからプッシュおよびポップされるだけです。つまり、現在のアクティビティによって開始されたときにスタックにプッシュされ、ユーザーが [戻る] ボタンを使用してスタックを離れるとポップオフされます。
次に、singleTask起動モードについて説明します。次のステートメントがあります。
システムは新しいタスクを作成し、新しいタスクのルートでアクティビティをインスタンス化します。ただし、アクティビティのインスタンスが別のタスクに既に存在する場合、システムは、新しいインスタンスを作成するのではなく、その onNewIntent() メソッドを呼び出すことによって、インテントを既存のインスタンスにルーティングします。
これを正しく理解していれば、singleTaskアクティビティはタスクのルートにしかなり得ません。なぜなら、それらはそのように作成され、アクティビティがバック スタックで場所を交換することはないからです。しかし、そのようなアクティビティは、そのonNewIntent()メソッドへの呼び出しを受け取ると、どのように反応するのでしょうか?
そのページには、この問題に関する別の発言があります。
別の例として、Android ブラウザー アプリケーションは、要素で singleTask 起動モードを指定することにより、Web ブラウザー アクティビティが常に独自のタスクで開く必要があることを宣言します。これは、アプリケーションが Android ブラウザを開くインテントを発行した場合、そのアクティビティがアプリケーションと同じタスクに配置されないことを意味します。代わりに、ブラウザの新しいタスクが開始されるか、またはブラウザがすでにバックグラウンドで実行されているタスクを持っている場合は、そのタスクが新しいインテントを処理するために進められます。
そのため、このガイドでは、 singleTaskアクティビティを呼び出すと何らかの形でそれが進行すると述べています。しかし、その活動がそのタスクの最上位にない場合、どうしてそれが真実になるのでしょうか? アクティビティが再開されたのか、それともユーザーに表示されずにonNewIntent()メソッドの呼び出しを受け取っただけなのか? 本当にわかりません。
PS: ほぼ同じ質問が 1 年以上前に既に行われていましたが、適切な回答はありませんでした。したがって、技術的には私の質問は重複していますが、明確で明確な回答に値するので、再質問したいという衝動を感じています.
android - Android 起動モード シングル タスク
私のアプリにはダッシュボード アクティビティがあり、その起動モードは「SingleTask」です。私のアプリが onCreate なしで onNewIntent になる可能性はありますか?
たとえば、ユーザーがダッシュボードから別のアクティビティに移動し、ダッシュボードが破棄された後、ユーザーが再びダッシュボードに移動するとどうなりますか?
onCreate は機能しますか、それとも onNewIntent から継続しますか?
ありがとう。
android - 通知から開始された SingleInstance アクティビティは、backPressed で、アプリから出てきます
アプリには、A、B、C という 3 つのアクティビティがあります。A は B を起動し、B は C を起動します。C の起動モードは SingleInstance (マニフェストで宣言) です。
手順: 1.C を使用している場合、通知バーに通知を表示し、クリックすると同じ画面が起動します。2. ホームを押してアプリをバックグラウンドにしました。3. 通知をタップすると、C が起動します。
質問: C を押すと、アプリケーションから出てきます。代わりに、アプリの前の画面、つまり B に戻る必要があります。
注: C を singleInstance として宣言しました。これは、C の複数のインスタンスが通知のタップで起動されることを望まないためです。OnNewIntent()を使用して、対応するデータで UI を更新することにより、同じインスタンスを処理しました。
前もって感謝します!
android - AndroidのLaunchModesの実際のユースケースは何ですか?
(singleInstance、singleTask、singleTop) が必要な目的を果たすいくつかのアプリケーション例、またはユースケースは何ですか。つまり、なぜ 1 つの launchMode を他のものより優先するのでしょうか? これまでのところ、それらを使用した私の経験は厳密にメモされているため、それらがどこで使用されているかを理解するのに役立ちます. ありがとう!
android - 私のアプリは新しいインテントを作成しています。アプリの起動時にアプリの古いインスタンス (実行中の場合) が必要です
私はアプリに取り組んでいます。その ' 単一ページのストップウォッチ アプリ。したがって、ホームボタンを押して再度起動するか、実行中のアプリから実行すると、アプリの新しいインスタンスが作成されます。以前の現在実行中のインスタンスが必要です。
これをグーグルで調べたところ、起動モードを設定する必要があることがわかりました。というわけで、以下のようなことをしました。しかし、何も機能していません。それはまだ同じです。
もう1つ、タイマーに基づいています。アプリをバックグラウンドで実行する必要があるということですか?
android - セレクターからアプリを起動すると、onNewIntent が呼び出される代わりに、バックグラウンド アクティビティが再作成される
ACTION_SEND のインテント フィルタを含むアクティビティがあります。ファイルは、別のアプリ (ギャラリーなど) からこのアクティビティに共有でき、onNewIntent で処理できます。
ただし、私の Samsung Galaxy S5 では、以前のようには機能しません (多数のデバイスでテストされており、一部のデバイスではまだ機能しているため、デバイス固有のものだと思います)。onCreate は常に呼び出され、onNewIntent は呼び出されません。常に singleTask の launchMode がありました。
アプリをバックグラウンドにして戻ってくると、onCreate は呼び出されませんが、ファイルを共有するためにセレクターからアプリを選択すると、上記の動作が発生します。
launchMode を singleTop に設定し、フラグを設定してみました。アクティビティを最初に起動するインテント。Intent.FLAG_ACTIVITY_SINGLE_TOP を独自に設定してみました。また、launchMode を singleInstance に変更してみました。アプリがバックグラウンド化されたときに onSaveInstanceState が呼び出されたにもかかわらず、アクティビティに戻ると、savedInstanceState が null のように見えます。
この動作を防止して onNewIntent を呼び出す方法はありますか、それともデバイス固有のバグですか?