問題タブ [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 投票する
0 に答える
208 参照

android - Androidで最近のリストからサブアクティビティが開始されたときにアプリを再起動する方法

私のアプリには 2 つのアクティビティがあります。

  • 主な活動:singleTask
  • サブアクティビティ: singleInstance

アプリのアイコンをタッチしてアプリを起動すると、メインのアクティビティが開始されます。サブアクティビティに移動し、ホームボタンを押します。次に、タスクキラーを使用してアプリを強制終了します。ユーザーが最近のリストからアプリを選択したときにアプリを再起動したいのですが、アプリはサブアクティビティから起動します。メイン アクティビティに clearTaskOnLaunch を設定しようとしましたが、機能しません。

誰でもこの問題を解決する方法を知っていますか?

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

android - 戻るボタンが押された場合、Android singleinstanceアクティビティは単一ではありません

マニフェストで singleTask または singleInstance アクティビティとして定義されていても、アクティビティが複数回作成されるという興味深い問題が発生しました。これを再現できる方法を次に示します。メイン アクティビティで次のように言います。

私の SingleActivity には、次のものがあります。

マニフェストには、次のものがあります。

ここで、アプリケーションを起動すると、問題ないように見えます。1 つのケースを期待してくださいSingleActivity。. これは、ログに別の ID ハッシュ コードが表示されているため、私が知っていることです。MainActivityMainActivity.onResume()SingleActivity

起動モードが singleTask の場合も同様です。

唯一の回避策はオーバーライドするonBackPressed()ことですが、それは醜い解決策のようです。

私は何が間違っているのだろうか

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

android - PendingIntent によって開始されたアクティビティを再開できません

によって開始された 1 つのアクティビティを再開できませんPendingIntent

「再起動できません」は何も意味しません。たとえば、アクティビティが既に実行されている場合、 onCreateまたはonNewIntent呼び出されません。startActivity()

再起動できない MainActivity という名前のアクティビティは singleTop であり、 onNewIntentをオーバーライドします

についてのマニフェストは次のMainActivityとおりです。

まず、MainActivity保留中の意図を持つ通知によって が開始されます。

私の PendingIntent は次のとおりです。

そしてMainActivity実行startService()し、サービスを実行しsendBroadcast()、BroadcastClass を実行しますstartActivity(Intent(this,MainActivity.class))

Jere は BroadcastClass です。

その後onNewIntent()は...呼び出されませんonCreate()

しかし、ホームスクリーンでアイコンを押してプログラムを起動すると、同じフローでonNewIntentinが呼び出されます。MainActivity

編集: onNewIntent はこちらです。

「onNewIntent」は LogCat に表示されません。

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

android - android:launchMode singleInstance に関する質問

Android の singleInstance launchMode は、アプリケーションの主なタスクに必要なことを実行しているようです。これは、左のメニュー バーからアクティビティに戻るたびに、そのアクティビティの状態を維持することです。

問題は、この launchMode を設定すると、ほとんどのデバイスでアクティビティ間で恐ろしい黒いちらつきが見られることです。Google 検索では、これが正常かどうか、または修正方法については何も見つかりませんでした。

私はsingleTaskを試しましたが、タスクA - B - Cから移動してからAに戻ると、タスクBがスタックから削除され、開始時にその状態を再度リロードする必要があるため、それは私が望むことを正確に行いませんそのアクティビティ。

また、これは singleInstance を完全に理解していない可能性がありますが、これらのアクティビティでは戻るボタンが機能しなくなりました。私がやりたいのは、戻るボタンが押されたときに singleInstance アクティビティがホーム画面に戻ることです。

これに関するヘルプは大歓迎です。

ありがとう!

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

android - Android:singleTop / singleTaskモードでアプリケーション(AIDL)をバインドする

2つのAndroidアプリケーションをAIDLファイルにバインドしました。AアプリケーションとBアプリケーション間の交換は次のようになります。

  • AアプリケーションはAIDLインターフェースを介してBアプリケーションに接続します
  • アプリケーションがBサービスのメソッドを呼び出す
  • BサービスはPendingIntentを返します
  • アプリケーションがPendingIntentを開始します
  • Bアプリケーションでアクションが終了したら:Aアプリケーションに戻ります

ただし、交換前にBアプリケーションが起動された場合、ユーザーは、Aアプリケーションではなく、「finish()」メソッドを呼び出した後、Bアプリケーションの最後のアクティビティにリダイレクトされます。

私のAアプリケーションでは:

Aアプリケーションマニフェストファイルでandroid:launchModeをsingleTaskまたはsingleTopに設定しようとしましたが、問題は同じままです。ご覧のとおり、アクティビティを送信するときに「FLAG_ACTIVITY_MULTIPLE_TASK」フラグも設定します。

私のBアプリケーションのコード:

保留中のアクティビティの作成

BillingActivityで

読んでくれてありがとう !

- -アップデート

Bアクティビティのマニフェストファイル:

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

android - Android アプリの他のアクティビティを開始せずにサービスからアクティビティを開始する

IncomingCall が検出されたときに Theme.Dialog でアクティビティを開始しています。ただし、ダイアログ アクティビティを開始すると、必要な動作ではない着信画面が非表示になります。そのダイアログアクティビティを単独で開始して、着信画面の上にアプリケーション全体ではなく、着信画面の上に表示されるようにします。マニフェストと NEW_TASK フラグで SingleTask を使用し、あらゆる種類のコンテキストを使用しました。ヒントとして、TrueCaller Android アプリのようなことをしたいと考えています。

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

android - Android アプリケーションの Account Picker がキャンセルされるのはなぜですか?

Android デバイスから Google ドライブにファイルをアップロードするための「5 分間のクイック スタート」ドキュメントに従って、ファイルを正常にアップロードするテスト アプリケーションを作成しましたが、関連するコードをより大きなアプリケーションにコピーしようとしてもファイルがアップロードされません。ファイルの Google アカウント ピッカーが常にキャンセルされるためです。

  • onActivityResult() の結果コードが 0 (つまり、 RESULT_CANCELED ) である、
  • onActivityResult() インテント引数が null であり、かつ
  • logcat (以下に表示) は、「アクティビティが新しいタスクとして起動されているため、アクティビティの結果をキャンセルしています」と明らかにしています。

04-22 02:04:25.098: D/alsa_ucm(162): snd_use_case_set(): uc_mgr 0x40e59388 identifier _verb value HiFi Lowlatency
04-22 02:04:25.098: D/alsa_ucm(162): スピーカー イネーブル 1 のミキサー コントロールを設定します
04-22 02:04:25.098: D/ACDB-LOADER(162): ACDB -> send_afe_cal
04-22 02:04:25.098: I/ActivityManager(526): START u0 {act=com.google.android.gms .common.account.CHOOSE_ACCOUNT cmp=com.google.android.gms/.common.account.AccountPickerActivity (エクストラがあります)} pid 3484
04-22 02:04:25.098 から: W/ActivityManager(526): アクティビティは次のように起動されます新しいタスクなので、アクティビティ結果をキャンセルします。
04-22 02:04:25.108: D/alsa_ucm(162): HiFi Lowlatency enable 1 のミキサー コントロールを設定します
04-22 02:04:25.108: D/ALSAModule(162): 返されるデバイス値は hw:0,14 です
04-22 02:04:25.118: D/ALSAModule(162): setHardwareParams: reqBuffSize 1024 チャンネル 2 sampleRate 48000
04-22 02:04:25.118: D/ALSAModule(162): setHardwareParams: buffer_size 2048, period_size 1024, period_cnt 2
04-22 02:04:25.188: D/dalvikvm(526): GC_FOR_ALLOC 解放 565K、15% 解放 18562K/21684K、一時停止 71ms、合計 71ms
04-22 02:04:25.248: D/overlay(159): 未設定パイプ=VG0 dpy=0; パイプの設定を解除=VG1 dpy=0; 設定解除 pipe=RGB1 dpy=0
04-22 02:04:25.248: W/InputMethodManagerService(526): ウィンドウは既にフォーカスされており、次のフォーカス ゲインを無視します: com.android.internal.view.IInputMethodClient$Stub$Proxy@41ebd7e0 attribute=null 、トークン = android.os.BinderProxy@42018140
04-22 02:04:27.991: D/dalvikvm(526): GC_FOR_ALLOC 解放された 422K、15% 解放された 18564K/21684K、一時停止 65ms、合計 66ms
04-22 02:04:28.011: I/ActivityManager(526): もう com.google.android.marvin.talkback は必要ありません (pid 5301): 空 #17
04-22 02:04:28.241: D/overlay(159 ): pipe=RGB1 dpy=0 を設定します。パイプを設定=VG0 dpy=0; パイプを設定=VG1 dpy=0;
04-22 02:04:28.672: D/overlay(159): 未設定パイプ = VG0 dpy = 0; パイプの設定を解除=VG1 dpy=0; パイプの設定を解除=RGB1 dpy=0;

Google アカウント ピッカーを起動するコードは両方のアプリケーションでまったく同じですが、ピッカーはより大きなアプリケーションでのみキャンセルされます。

テスト アプリケーションとより大きなアプリケーションはどちらもデバッグ バージョンであり、同じ jar (以下に表示) を含み、同じデバイス (Nexus 4、OS 4.2.2) で実行されますが、5 分間のクイックスタートで提案されているように、各アプリケーションにはGoogle APIs Consoleによって生成された独自のクライアント ID 。

ここに画像の説明を入力

このキャンセルの結果、アカウントが選択されるかなり前に、Google アカウント ピッカーが描画されるとすぐに onActivityResult() が実行されます。

更新:
ほぼ同量の試行錯誤の後、AndroidManifest.xml から以下を削除すると問題が解決したことが判明しました。

Android の Google アカウント ピッカーが複数のインスタンスを作成する必要があるのはなぜですか?

ありがとう、
グレッグ

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

android - 通知を介して起動すると、Mosync アプリケーションがクラッシュします。LaunchMode singleTask

Mosync SDK 3.2.1 を使用して、Android 2.2、2.3、および 4.03 用の HTML 5 アプリケーションを開発しています。この投稿http://jira.mosync.com/browse/MOSYNC-2367で説明されている問題がありました。提案された修正

android:launchMode="singleTask"

メニューからアプリを起動するときの「アプリの再起動」の問題を解決しましたが、アプリがバックグラウンドで動作しているときに通知を介してアプリの起動動作を壊しました。(launchMode="standard" では正常に動作し、アプリは再開します)。この修正により、「残念ながら、Zymbo が停止しました」(4.0.3) および「アプリケーション Zybmbo が予期せず停止しました」というメッセージでクラッシュします。

アプリケーションがバックグラウンドで動作していない場合は、通知による起動が正常に機能し、アプリが開始されます。

これは、MAIN アクティビティがマニフェスト ファイルで宣言される方法です。

アプリケーションの現在の動作は次のとおり
です。 1. メニュー ショートカットからアプリケーションを起動します
。 2. [ホーム] を押します
。 3. メニュー ショートカットからアプリケーションを起動します (launchMode="standard" => アプリを再起動します。バックグラウンド アプリ OK)
4. [ホーム]
を押します。

私が達成したいのは、アプリケーションがバックグラウンドで実行されていて、メニューから通知またはアプリのアイコンをクリックした場合、アプリケーションを再開し、再度開始しないようにすることです。

任意のヒントをいただければ幸いです, ありがとう, マイク

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

android - Android ショートカットのクリックを回避する方法 新しいアプリ インスタンスを作成し、古いアプリ インスタンスを強制終了する

次のコードを使用してAndroidショートカットを作成しました

アプリを開き、最後に BActivity のようなアクティビティで、ホーム画面に切り替えてショートカットをクリックすると、アプリは上記のコードのように MainActivity に移動します。これを回避して、アプリをフォアグラウンドにする機会はありますかすでに作成されている場合は?