4

A-> B-> C-> Dというシーケンスの4つのアクティビティを持つアプリと、アプリの起動時にAによって開始されるサービスSがあります。特定の条件で、このサービスは通知をトリガーし、アプリ内でアクティビティCを再び開始し、 Cが通常Bから必要とする引数を使用します。また、適切に機能するために、C はアクティビティ A の静的変数を使用する必要があります。それがセットアップでした。

サービスSから通知がトリガーされ、それをクリックすると、アクティビティABが自動的に破棄され、強制的に閉じられます (アクティビティCはA の静的変数に依存しているため)。なぜこれが起こるのですか?a を使用しTaskStackBuilderC の親アクティビティ (つまりB ) をスタックに配置し、通常のバック動作でアクティビティBに戻るようにしました。

この動作の理由を誰か教えてください。アクティビティCを相互依存タスクとして実行したくありません。アプリに既にあるインスタンスと同じインスタンスにしたい。ここで問題を理解するのを手伝ってください。

4

2 に答える 2

2
  1. 活動は独立していなければなりません。危険ですactivity C needs to use a static variable from the activity AA->B->C->Dのように順番にアクティビティを作成しても、Android はアプリがバックグラウンドにあるときに A/B/C/D を破棄する可能性があり、ユーザーがアプリに戻ったときにアクティビティ D のみが再作成されます。

  2. 私はかつてあなたと同じ問題に遭遇しましたStarting an Activity from Notification destroys Parent Acitivities. これは、TaskStackBuilder を使用したためです。そして、TaskStackBuilder の使用をやめた後でも、問題は残ります。アプリをアンインストールした後でのみ、期待どおりに機能します。https://stackoverflow.com/a/28268331/1198666のコメントを確認してください

于 2015-12-05T05:03:11.743 に答える
0

これは、Activity Lifecycle が ICS 以降とは異なる動作をするために発生しています。この事実はこの質問に答えますが、なぜこれが起こっているのかはまだわかりません. 誰かがコードを見て、この動作を自分で確認したい場合は、こちら

于 2013-01-21T20:13:40.800 に答える