問題タブ [taskstackbuilder]
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 - スタックの一番上にある場合でも、singleTop アクティビティが作成されることがある
launchMode が singleTop であるアクティビティがあります (マニフェスト内)。私の理解では、Activity が singleTop で、Activity スタックの一番上にある場合、新しい Intent で Activity を起動すると、Activity の新しいインスタンスが作成されることなく、実際に Activity で onNewIntent() が呼び出されます。 (したがって、onCreate() は呼び出されません)。
このアクティビティは、進行中の通知を表示するフォアグラウンド サービスを実行します。選択すると、この通知により、スタックの一番上にあるアクティビティにユーザーが戻されます (この singleTop アクティビティから起動されるアクティビティはありません)。私の問題は、通知が選択されると、Activity の新しいインスタンスが作成されることがあるということです。アクティビティがバックグラウンドで強制終了され、再起動された場合 (vs. onNewIntent() で前面に出された場合) とは動作が異なるように意図されているため、これは私のアクティビティにとって問題です。私のサービスが通知を表示するために使用するコードは次のとおりです。
このような動作が時々発生すると言いますが、発生すると、繰り返し発生します。例えば:
- MyProblematicActivity が初めて起動されました
- サービスが開始され、通知が表示されます
- 通知が選択されています。
- MyProblematicActivity が再度作成されます (サービスは既に開始されており、通知は既に表示されています)。
- 2 ~ 4 回の forevs を繰り返します。
時折、#3 の後、MyProblematicActivity の onNewIntent() が新しいインスタンスを作成せずに呼び出され、期待どおりに動作しました。
なぜこれが起こっているのか、私にはわかりません。タスクのルートにあるステート アクティビティは、singleTop アクティビティの動作に影響を与えますか? FWIW、MyProblematicActivity を作成するアクティビティは singleTask アクティビティです。
android - Android TaskStackBuilder.startActivities() が期待どおりに動作しない
Androidの重複の可能性- 通知の作成、TaskStackBuilder.addParentStack が機能しない
このトピックについて多くの質問が回答されていますが、どれも私の問題を解決していません。私は実際、それらすべてで遊んでいますが、それらを機能させることができませんでした:(
スプラッシュ スクリーンがあり、フラグをチェックして (バックエンドから取得します)、ユーザーを SecondActivity に移動します。たとえば、フラグが true の場合は FirstActivity ではありません。
私のマニフェストは次のようなものです:
SplashScreen アクティビティの onResume() メソッドで次のメソッドを呼び出しています。
これで、ユーザーがアプリを起動し、フラグが null でない場合、SecondActivity にリダイレクトされます。ただし、戻るボタンをクリックするとアプリケーションが閉じますが、代わりに FirstActivity が表示されると思います。SecondActivity では、ユーザーが戻るボタンをクリックすると同じ動作が見られると予想される FirstActivity に移動します。
任意の提案をいただければ幸いです。ありがとう。
java - Intent.FLAG_ACTIVITY_NEW_TASK は引き続きアクティビティを同じタスクにバンドルします
最初に起動される開始\ホーム アクティビティがあります。
別のフローでは、ダイヤラーによってトリガーされるブロードキャスト レシーバーを作成しました。
後者は、ポップアップ フラグメントを含む透明なアクティビティを示しています。
それでも、透過的なホスティングアクティビティとともにポップアップが表示されます
事前に開かれた「home\main\launch」アクティビティも含まれます。
また、ポップアップを非表示にするとき(「ホーム」ボタンを押す)
すべてのアプリ アクティビティが 1 つのタスクにまとめられていることがわかりますが、予想した 2 つではありません。何故ですか?
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
これを解決することになっていませんでしたか?
android - TaskStackBuilder#startActivities() NullPointerException
4.4.2 および 4.4.3 デバイスで発生し続けるクラッシュがあります (これが API の問題かどうかはわかりませんが)。ParsePushBroadcastReceiver
次のコードによって、呼び出しNullPointerException
の奥深くでエラーが発生する場合があります。startActivities
コンテキストが null かどうかをテストしてみましたが、Intent のインスタンス化でそれをキャッチできました。このアプリケーションが を使用していることにも注意してくださいParse Push
。このクラッシュのクラッシュ ログ:
android - Android - TaskStackBuilder .addParentStack でアプリが応答しなくなる
そのため、私のアプリは addParentStack() が実行されるとすぐに応答を停止し、アプリが応答していないというポップアップが表示されます。待機するか閉じるかを選択してください。すぐに閉じると、直前のアクティビティが表示されます。クラッシュまたは無応答が発生します。より大きな問題は、デバイスの logcat にエラー メッセージがないことです。そのため、問題の根本を見つけることができません。これは、メイン アクティビティの一部である私のコードです。
別のクラスを int として addParentStack パラメーターとして追加しようとしましたが、適切に実行できるクラスは single_event クラスの 1 つだけです。なぜそうなるのかわかりません...
これが私のマニフェストです
これは、デバイスの logcat から取得できる唯一のログでした
android - TaskStackBuilder、複数の個別の PendingIntents、通知
通知用の TaskStackBuilder と個別の PendingIntents の組み合わせに問題があります。それが何であるかを説明しましょう。
何かが発生したときに通知を作成する IntentService があります。場合によっては、いくつかの独立した通知を作成します。Google が言ったように通知をマージしないのはなぜですか? 各通知は同じアクティビティを開く必要があるため、渡されたインテントに異なるエクストラが含まれています。だからここで何をすべきか:
エクストラを使用して新しいインテントを作成します。
ここがトリッキーな部分です。適切なバック スタックで ItemActivity を開きたいのです。これは、AppBar で [戻る] ボタンまたは [上へ] を押したときに、親アクティビティに戻りたいということです。だからここに私がしていることがあります(Googleドキュメントによると:http://developer.android.com/training/notify-user/navigation.html):
AndroidManifest.xml には次のものがあります。
次に、バックスタックを作成します:
そして PendingIntent:
最後に - 通知:
このシナリオでは、アプリは適切なバック スタックを使用して別の通知を作成しますが、同じ PendingIntent を使用します。
たとえば、PendingIntent を取得中に requestCode を feed.get_id() (または System.currentTimeMillis() のような PendingIntent ごとに別の異なる番号) に置き換えると、通知をタップすると、適切なインテント (通知ごとに異なる PendingIntent) を持つアクティビティが表示されますが、バック スタックなし - [戻る] ボタンと [上へ] ボタンでアプリケーションを閉じます。
マニフェストから android:launchMode="singleTask" を削除しようとしました。新しいインテントを作成するときにフラグを追加しないでください。インターネットの半分、何百もの StackOverflow の投稿を読み、何も読みません。
私はこの 2 つのシナリオの作業の組み合わせを管理していません。つまり、適切なインテントとバック スタックでアクティビティを開きます。
事前に、「onBackPressed をオーバーライドしてそこからアクティビティを開始する」などと書かないでください。ここで何が間違っているのか、適切なツールでこれを達成する方法を知りたいのです。