2011-02-03 11 views
4

アクティビティーがあるのは、結果の別のアクティビティーを開始するアクティビティーです。結果が戻ったら処理して終了します。 startActivityForResult()の電話番号はonCreate()です。別のアクティビティーを開始するアクティビティーのパターン(結果のため)

私が見ているのは時々私がターゲットアクティビティから戻ったときに、私の活動の中のonCreate()が再び呼び出されます。これはもちろん、2回目のターゲットアクティビティを再開します。

これは理にかなっていますが、なぜこれが当てはまるのか理解していますが、達成しようとしているものの正しいパターンを理解できません。私が始めた活動から戻ったとき、私は明らかに目標の活動を再開したくない...ただonActivityResult()を実行して終了したい。

誰かが州の環境設定を提案した場所を読んだが、それはバグの良い出所のように思える。たとえば、間違った状態になってしまったようだ。

どのような考えですか?

+0

別のものに行くのではなく、最初のアクティビティで結果を処理してみませんか?それとも、何らかの工場として使っていますか? – xil3

+0

あなたのデザインパターンに欠陥があると思います。なぜあなたはユーザーとやりとりせず、結果だけを処理するアクティビティが必要ですか?あなたはサービスが必要なように聞こえる。 – user432209

+0

私は2番目のアクティビティを制御できません。 –

答えて

2

ここに解決策があります。キーはonCreate()ではなく、onResume()でターゲットアクティビティを開始することです。あなたの活動 が再起動されたときにonActivityResult()、

上のJavadocからすぐ onResume(前)この呼び出しを受信します。例えば、onActivityResultで「ターゲットアクティビティこの時間を開始していない」と言うフラグを設定するように、他の言葉で

、あなたが)(... onActivityResult()はonResume()の前に呼び出されることを保証することができますonResume()が続いて呼び出されると、ターゲットアクティビティの再起動を避けることができます。

関連する問題