問題タブ [activity-stack]
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 - 子アクティビティが閉じたときにアクティビティを更新する
私は次のようなアクティビティスタックを持っています:
アクティビティCによって行われた変更によってデータベースが更新され、アクティビティAにリストするものが異なる可能性があるため、アクティビティAのビューを更新したいと思います。
私の主な活動がそのようなものである場合:
onResume()を作成する必要がありますか?onCreateに似たものにしますか?または、同じカーソル、同じアダプタなどを使用してビューを「更新」できますか?何が良いですか?
android - Android バックスタックを制御する方法
私が持っているとしましょう
A->B->C->D->E
Android バックスタック内。次のいずれかに戻れるようにしたい:
どうすればこれを達成できますか?戻るボタンのクリックを強制しないことを願っています。
android - 戻るボタンは、戻る代わりにアクティビティを再開します
アプリケーションに原因不明のバグがあります。A
HomeActivity - 、TestActivity -B
および ResultActivity -の3 つのアクティビティがありますC
。
アクティビティは通常の方法でA
起動しますB
その後、同じようにアクティビティB
が起動します。C
完了すると、このようにスタックのクリアC
に戻りますA
これで、このプロセスを問題なく無限に繰り返すことができます。ただし、を使用して startにパラメーターを送信することにより、ユーザーがviaB
から開始できるようにするショートカットがあります。ここで、 activity で戻るボタンを押すと、 に戻るのではなく、アクティビティが再開されます。C
A
A
intent.putExtra("startTest", true);
A
B
B
A
アクティビティスタックは、次のように問題ないようですadb shell dumpsys activity
:
戻るボタンを何度押しても問題ありません。スタックは同じままで、アクティビティB
は再起動し続けます。
さらに奇妙な部分:戻るボタンをダブルタップすると、実際にスタックに戻ってアクティビティが発生しA
ます。
戻るボタンの特別な処理はありません。うまく機能するので、ケース 1 では機能しますが、ケース 2 では機能しません。検索しても何も得られなかったので、洞察をいただければ幸いです。
編集 これは、アクティビティからの関連ビットであると私が思うものです
android - Androidがアクティビティスタックを読み込んでいるのに対し、戻るボタン
現在、戻るボタンに関するベストプラクティスは何ですか?
多くのアプリは、開いたときに(onStopとonDestroyedが実行された後)、アクティビティスタック全体を保存および復元します。たとえば、Facebookを開いて最後の場所が写真にあった場合、押し戻すと元に戻りません。 Facebookアプリを閉じると、数日前にアプリを開いたときに最初に行ったことが無限に戻ります。
この設計規則は、戻るボタンが期待するものとは少し異なると思います。通常、アプリを強制終了したり、メインビューを停止したりして、デバイスのランチャー画面に戻るために使用されます。
Facebookは、これを行うアプリの一例にすぎません。
この機能の有用性(アクティビティスタックを復元して戻るボタンをトラバースさせる)と他の機能(ビューを強制終了してユーザーをアプリから戻す)について説明している開発者向けの記事やGoogle I / Oのような信頼できる情報源はありますか?もしそうなら、ここでそれらについて話し合い、リンクしてください。戻るボタンの適切な使用と誤った使用があるため、これが主観的すぎると見なされないことを願っています
android - 「アクティビティを保持しない」に似た動作を実装する
私のアプリには、アクティビティ a-> アクティビティ b-> アクティビティ a-> アクティビティ b... 無限に移動できるシナリオがあり、最終的には OOM になります。
「アクティビティを保持しない」動作のようにする方法を知っている人はいますか?たとえば、アクティビティは強制終了されてメモリを解放しますが、履歴には残っているため、ユーザーが戻ったときに再作成できますか?
android - BroadcastReceiver からの起動アクティビティ - それを却下しても、アプリのスタック内の以前のアクティビティに戻るべきではありません
これが私のシナリオです。アプリは、メインの起動ポイントであるアクティビティ A から始まります。B & C など、A から開始されるさまざまなアクティビティが他にもあります。A から B への移動は元に戻すことができる (実際に戻るには押し戻す) 必要があるため、A => C と同じようにアクティビティ スタックに A が必要です。すべてがデフォルトで問題なく動作します。
ここからがややこしいところです: バックグラウンド プロセス (ブロードキャスト レシーバー) から起動できる X などの別のアクティビティがあります。X が起動すると、現在画面に表示されているものはすべて置き換えられるはずです。その部分は問題ありません。その後、ユーザーは X を閉じることができます (finish() と startActivity(A) で終了するため、スタックに X はありません)。また、バックグラウンド プロセス (放送受信機が別のインテントを受け取る) によって終了することもできます。後者の場合に問題があります。
私はまだ X で finish() を呼び出していますが、次のことが起こります: 以前にアクティブだったアクティビティ (A など) が再び表示されます。X が起動する前に A が表示された場合は問題ありませんが、アプリがバックグラウンドにあった場合、X が閉じられると、X を起動する前の状態が復元されます (したがって、ホーム画面を表示するか、X が起動する前に実行されていたアプリを表示します)。発売)。あなたが疑問に思っているなら.. なぜ私はユーザーに割り込んでいるのですか? それには正当な理由があります (これはテレフォニー アプリであり、着信は中断されるはずです)。
Xでdismissを呼び出すと、アプリはアクティビティスタックにある他のものに戻るようです。X が起動されたときにアプリがフォアグラウンドにあった場合は問題ありませんが、そうでない場合は、X を閉じて、アクティブだったアプリが再び最上位になるようにします。
X を起動するときに使用しているインテント フラグは次のとおりです。
私はすでに FLAG_ACTIVITY_MULTIPLE_TASK を試しましたが、結果は満足のいくものではありませんでした (アプリがバックグラウンドで実行されていた場合、これにより、ユーザーの介入なしに X が閉じられたときにアプリが一番上に表示されなくなりますが、アプリの履歴には X が表示されます) X は決してそこに表示されるべきではありません。さらに、ユーザーが実際にそれを選択すると、確かに X が起動しますが、これは悪いことです。
簡単に言えば
電話がステータス S1 にある X が起動された X は、finish() を呼び出すことによってユーザーの操作なしで閉じられます 電話はステータス S1 に戻る必要があります
これは何とか達成できますか?
android - 特定のアクティビティのすべてのインスタンスを終了する
アプリケーションには多くのアクティビティが存在する可能性があり、最後に起動されたアクティビティはスタックの最上位に留まり、押し戻すと現在のアクティビティが終了します。一連のアクティビティがあり、フローは次のとおりです。
A、B、C(1)、D、C(2)がある場合...アクティビティC(1)とC(2)は、アプリケーションのナビゲート中に起動されるアクティビティCの2つの異なるインスタンスです。アクティビティCのすべてのインスタンスをクリアすると、結果はC(2)を終了したときに、これらのスタックA、B、Dを残しておく必要があります。私は何をすべきか 。
IMP-これらのインスタンスを作成するのではなく、新しいタスクフラグでCを開始できたので、C(2)を終了しない限り、 C(1)をスタックに保持したいのですが、これらのインスタンスのUIと動作は異なります。
次のアプローチは好ましくありません。
初め
これにより、スタックからすべてのアクティビティがクリアされ、アクティビティが再起動されます
2番
シングルトンクラスでアクティビティを追跡し、必要なフローを再起動します。ただし、開始するアクティビティが多数ある場合は、これに時間がかかります。
だから、パッケージマネージャーなどを使って問題を解決する解決策があるはずだと思いました。解決策をいただければ幸いです。
android - フォアグラウンドでの Android アクティビティ タスク
3 つのアクティビティ タスク ABC があります
そして、私はService
を使用して GPS を持っていLocationManager
ます。
私のアプリケーションには次のロジックがあります。
- ランチャーアイコンをクリック - >ログインアクティビティを開始
- ログイン後 - > ログイン アクティビティは finish(); です。そして、dashboardActivity を開始します
- ダッシュボードで、GPSを起動
CreateNewPolygonActivity
して起動しますService
- HOMEを押します(これは
RecordActivity
フォアグラウンドに再編成されます)
私はいくつかの間違いが働いた後
CreateNewPolygonActivity
で開くonCreate
- 開いた
DashboardActivity
タスクの編成に問題があると思います。
android - Android別のアプリケーションで起動する前に開いている場合、アプリケーションのスタックをクリアする方法は?
アプリケーションを介して別のアプリケーションを起動しているので、そのアプリケーションのインスタンスが既にスタックにあるかどうかを確認したいですか? 存在する場合は、起動前にすべてのインスタンスをクリアします。