0

質問のタイトルはおそらく十分に明確ではありません。これは、アプリケーションが低リソース状態でAndroidによって「強制終了」された後、子アクティビティから親アクティビティに結果を渡し、ユーザーがこのアプリケーションに戻ったときに自動的に復元されるという問題に対処します。

アクティビティAがを使用してアクティビティBを呼び出すとしますstartActivityForResult()。アプリケーション実行コンテキストがBにある間、アプリケーションはバックグラウンドに移行し、しばらくするとシステムによってアンロードされます。その後、ユーザーはアプリケーションに戻り、アクティビティBは問題なく復元されます。唯一の問題は、現時点ではAがAndroidのバックスタックに存在せず、ユーザーがBを閉じると(finish()適切な呼び出しを伴うsetResult())、Aが結果を受け取らないことです。イベントの代わりに、Aはスタートアップチェーンからその他のイベントをonActivityResult()受信します。onCreate()

したがって、問題は、「強制終了」状態の後に復元されるアプリケーションのアクティビティ間で結果を渡す方法です。

アップデート:

@fedepaolがグーグルグループへのリンクを提供したという事実にもかかわらず、誰かがonActivityResult問題の状況で呼び出されるべきであると書いたが、私はそれを機能させることができなかった。また、グーグルグループでのその質問のOPも問題を解決しなかったことに注意する必要があります。また、SOで同様の質問を見つけました-プロセスが強制終了された後、onActivityResultは呼び出されません-これも解決策がありません。

コードを再確認しましたが、なぜ機能しないのかわかりません。通常の状況では、オーバーライドされたメソッドが呼び出されます。アクティビティのバックスタックが1つずつ復元される場合、復元されません。

4

1 に答える 1

1

あなたonActivityResultが呼ばれないかどうかはわかりません。onCreate私の理解(正しくないかもしれません)から、osは/onRestoreInstanceStateメソッドでAの状態を再構築するためのすべての手段を提供するはずです。それらの後で、onActivityResultが前の結果で呼び出されることを期待しています。

これは、DianneHackbornによるこの回答によっても確認されています。

結果を返す直前にBが殺された場合に対処する必要があることも事実です。

于 2012-12-25T21:56:12.063 に答える