2013-04-08 2 views
6

アクティビティAが結果のアクティビティBを開始すると、アクティビティBのonStopメソッドがアクティビティAのonActivityResultメソッドの前に呼び出されたという印象を受けました。私はちょうどB.onStopに設定されている静的変数でそれをテストしましたが、A.onActivityResultでそれを読むと、変数はnullになります。アンドロイドライフサイクルonActivityResultとonStopの比較

+2

予想される動作が記載されているドキュメントを指摘してください。 – CommonsWare

+0

"アクティビティBのonStopメソッドは、アクティビティA"のonActivityResultメソッドの前に呼び出されます。これはデフォルトの動作であり、これも期待されます。それに対するあなたの意見は何ですか? –

+2

@CommonsWare:すべてを文書化する必要はありません。私はアクティビティAに戻る前に最初にアクティビティBを残しておかなければならないと考えています。 – learner

答えて

3

私はあなたがしたいことはですが、あまりにもしたくないと思います。 Here is what the docs say

保護のボイドonPause()が活動を背景に を行っている活動のライフサイクルの一部として呼び出されたAPIレベル1

に追加されましたが、(まだ)殺されていません。 のonResume()に対応しています。

アクティビティBはアクティビティAの前に起動されると、このコールバックが A. Bに呼び出されますが、AのonPause()が復帰するまで作成されませんので、 はここに長く何もしないようにしてください。

このコールバックは、主に新を開始するのに十分なリソースがない場合 にユーザー と必ず何も失われない作りに「編集の場所で」モデルを提示し、 活動が編集しているすべての永続状態を保存するために使用されますこれを最初に殺したことのない活動。これはまた、 次のアクティビティをできるだけ早く に切り替えるために、または、 などの排他的なアクセスであるリソースを閉じるために、かなりの量のCPUを消費するアニメーションを停止するなどの作業を行うのに適した場所です( )。カメラとして。

2

私は、onActivityResultonResume前に呼び出され、活動サイクル図の状態

次の表のhttp://developer.android.com/reference/android/app/Activity.htmlonStopのドキュメントは、アクティビティは、もはやユーザーに表示されたときに呼び出されていない、あなたの印象は間違っていると思います別のアクティビティが再開され、この1つをカバーしているためです。これは、新しいアクティビティが開始されているか、既存のアクティビティがこのアクティビティの前に持ち込まれているか、またはこのアクティビティが破棄されているために発生する可能性があります。

したがって、onResumeのAで呼び出される前に、onStopが呼び出されます。

関連する問題