問題タブ [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 - Activity の複数のインスタンスを防止しますが、onActivityResult は引き続き使用します
何度開いても一度だけ存在させたいアクティビティがあります。以前は、launchMode singleTask を使用していましたが、すべてうまく機能していました。ただし、onActivityResult を使用する必要がありますが、これは何らかの理由で launchMode singleTask と互換性がありません。
どちらかが行うことを複製する方法を知っていますか。
android - singleInstance 起動モードでアクティビティから音声認識アクティビティを正しく起動する方法は?
singleInstance 起動モードでアクティビティ内から起動された場合、RecognizerIntent を使用するアクティビティが正しく機能しないことを言及している別のスレッドを既に見ました。だから私は私の代替手段が何であるかを知りたい.
私の使用例は次のとおりです。私のアプリケーションはイベントをリッスンし、このイベントが発生すると、ユーザーが別のアプリケーションを使用している場合でも警告ダイアログを表示します。他の質問から、これを行う一般的な方法は、singleInstance 起動モードでアクティビティを起動することであることがわかりました。しかし、この警告ダイアログが表示されたら、RecognizerIntent を使用して、音声からテキストへの処理を行う必要があります。ただし、音声入力ダイアログは入力を待たずに onActivityResult() がすぐに呼び出されます。「singleInstance」以外の起動モードを持つアクティビティからアラート ダイアログがポップアップする場合、問題なく動作します。
この問題にアプローチする他の方法はありますか?
android - android singleTask/singleInstance の問題
インスタンスを1つだけ持ちたいAndroid用のゲームを設計しています。
ゲームには、GameActivity と呼ばれるメイン アクティビティと、CreateAccountActivity と呼ばれる別のアクティビティがあります。
マニフェストで GameActivity を int に定義しましたandroid:launchMode="singleTask"
。
アプリケーションの初回起動時に、メソッドを使用して CreateAccoutActivity を開始しますstartActivityForResult
。
問題は、ホームボタンを押してアプリケーションを起動しても何も起こらないことです (ユーザーの観点からは、ログから、CreateAccountActivity が破棄され、GameActivityonActivityResult
が呼び出されてから破棄されていることがわかります (RESULT_CANCEL
コースから外れます.
ログは次のとおりです。
簡単にするために、次のように説明します: アクティビティ A = MAIN - singleTask アクティビティ B = (未定義 - 標準)
A startsForResult B -> ホーム ボタン -> ゲーム起動ボタン -> B が破壊された -> A onActivityResult が呼び出された -> A が破壊された -> ゲーム起動ボタン -> A startForResult B ...
編集
singleTask を使用する必要があるかどうかは疑問です。
コード化したインテントではなく、Android によってアクティビティをどこから開始しても、Android は常にアプリを再起動し、アクティビティの複数のインスタンスは存在しないというのは本当ですか?
その場合は、何でもグーです :)
android - アプリケーション ランチャーの Android onNewIntent で最後のインテントが得られる
SingleTask であり、「テスト」スキームをリッスンできるアプリケーションがあります。
ボタンをクリックすると (コードを参照)、自分自身を再起動し、onNewIntent が呼び出されて「テスト」インテントが与えられます (これで、フラグメントをプッシュすることでこれに反応する可能性があります)
ここで、ホームを押してアプリケーションランチャーを開いてアプリケーションを再入力すると、onNewIntent を呼び出したいのですが、アクションをやり直したくないので (フラグメントのプッシュなど)、空のインテントで行います。しかし、onNewIntent は、アクティビティを起動するために使用された最後のインテント、つまり「テスト」インテントを提供しています。
同じフラグメントをプッシュしないようにするにはどうすればよいですか? 自分の ID を使用せずに良い方法はありますか。
android - Android アプリのバックスタックをリアルタイムで確認するには?
Android で遊んでいますが、さまざまなアクティビティ/インテント フラグまたは起動モードをテストしているときに、期待どおりの動作が得られません (特に、さまざまなアクティビティにさまざまなフラグがある場合)。Google Dev Guide を注意深く読みましたが、得られた結果をまだ説明できません。
さまざまなタスクのバックスタックをリアルタイムで確認できるデバッグ ツールまたはメソッドがあるかどうか疑問に思っています。
ありがとうございました。
android - ホームボタンをクリックすると、プログラムが最小化されます。しかし、アプリのアイコンを押すと、プログラムが2回起動します
次の問題があります。
Android の HOME キーを押すと、「デスクトップ」とアプリのアイコンが表示されます。次に、アプリのアイコンを押すと、アプリケーションが 2 回起動します。アプリを 2 回開きたくありません。
私のプログラムの仕組み:
4 つのアクティビティ (A、B、C、D) があります。
A - メイン アクティビティ: 最初に開くアクティビティです。ボタンがたくさんある他のアクティビティを開きます。Java の main() メソッドのようなものです。SplashScreen を表示し、別のアクティビティを呼び出します。次に、アクティビティ「A」を終了します。
B - メニュー画面: このアクティビティには、メニューのようなボタンがいくつかあります。構成ボタン、更新ボタン、およびログイン ボタンがあります。ログインボタンをクリックすると、このアクティビティが終了し、ログイン画面が開きます (アクティビティ「C」)。
C - ログイン画面: ユーザーはログインとパスワードを書き込みます。ログインが成功したら、このアクティビティを終了し、アクティビティ「D」を開きます。
D - アプリケーションのメイン画面: 常に開いたままになり、別のアクティビティを起動します。アプリケーションを閉じたいときにこれを終了します。
PS: launchMode フラグ (androidManifest.xml) を変更しようとしましたが、うまくいきませんでした。
私の AndroidManifest.xml 怒鳴る:
そして、これは私のアクティビティ「A.java」ソースです:
アプリを 2 回開きたくありません。
前もって感謝します!
android - ウィジェットから既存のアプリ インスタンスを開始する Android
私はいくつかのアクティビティを含むアプリを持っています...ユーザーがアクティビティ スタック A->B->C をナビゲートしているとしましょう。次にホームボタンを押します。ユーザーがウィジェットをクリックすると、アプリの既存/現在のインスタンスを前面に表示したいだけです。アプリの新しいインスタンスは必要ありません。アクティビティ C をフォアグラウンドに戻したい。
launchMode を試してみました"singleTask" | "singleInstance"
が、現在のインスタンスをクリアし、アクティビティ A で新しいインスタンスを作成するため、目的の要件は解決しません。
これを解決する方法はありますか?
どうもありがとう!
android - androidの起動モード「singleTask」について
私はアンドロイド開発者ガイドとインターネットのいくつかの記事を読みましたsingleTask
launchmode
. 例を見てみましょう:
ユーザーが App1 を起動すると、Android が新しいタスクを開始します。App1 が次の順序でアクティビティを作成するとします。
これが task1 の外観です。
次に、ユーザーがホーム ボタンをクリックして App2 の起動を選択すると、task1 がバックグラウンドになり、Android が新しいタスク task2 を開始し、ユーザーが何かを実行します。
今ActivityE
、 start を試してみて、 launchmodeActivityB
を持っているとしましょう。ActivityB
singleTask
私が理解しているのは、タスク1が再びフロントエンドになり、タスク2がバックグラウンドになることです。task1 は次のようになります。
つまり:
ActivityC
が task1 から削除され、ActivityB が最上位の Activity になります。ユーザーが「戻る」ボタンをクリックすると
ActivityA
、タスク 2 ではなくタスク 1 に戻りActivityE
ます。
私は正しいですか?
ありがとう
android - LaunchModeと最近のアプリの原則
WidgetResultActivityとNotificationResultActivityがあり、両方のlaunchmode=singleInstanceを設定します。ただし、動作は異なります。WidgetResultActivityはRECENTから開かれませんが、NotificationResultActivityは常にRECENTから開かれます(単独で開かれます!MainActivityなしで開かれます)。では、Recent、thxからNotificationResultActivityを開くことを禁止するにはどうすればよいですか。
編集:通知から開いたときに、ATesterアプリを表示してください...
テストコード:
テストマニフェスト:
テスト画像:
1位:
2番目:
3位:
4位:
編集:私が本当に必要としているのは、DIALOG BEHEVIORLIKEACTIVITYです。別の投稿で質問します。@ WebnetMobile.com、すべて同じようにありがとう。
android - android:launchMode="singleTask" は、複数のルート アクティビティの共存を妨げません
私の意図は、タスクのルート アクティビティがどのような条件でもインスタンスを 1 つだけ持つようにすることでした。だから私は android:launchMode="singleTask" を設定しました。これはほとんどの場合うまくいきました。
ただし、自分のタスクを他のタスクにすばやく切り替えて何度も元に戻すと、launchMode 設定の効果が失われるように見えました。以下のログがキャプチャされているように、以前のインスタンスが破棄される前に、アクティビティの新しいインスタンスが作成されたことを確認しました。
任意の条件でルート アクティビティの 1 つのインスタンスを確実にするための完璧なソリューションを提供してくれる人はいますか?
前もって感謝します