2017-07-26 8 views
2

かなり自己説明文です。アクティビティAからアクティビティBを開始し、その後にユーザが戻るかホームを押すと、アクティビティBが破棄され、アクティビティAがフォアグラウンドに戻ります。今アクティビティAのonCreateメソッドが呼び出されることが保証されていますか?それは私のように思える。ちょうどチェックしたかった。フォアグラウンドへのアクティビティの呼び出しは、そのonCreateメソッドを呼び出していますか?

答えて

1

いいえ、常に活動AのonStart()が呼び出されることを保証されている低スペックの携帯電話でそれをやろうと、おそらくそれが呼び出されます。 log.i()onCreate(), onStart()コールバックに入れて自分で確認することができます。しかし、メモリが足りず、偶然GCがアクティビティAのsavedInstanceState状態をクリアした場合、システムはonCreate()に再度コールする必要があります。

システムの内部状態に基づいて、onCreate()、時にはonStart()、時にはonResume()を呼び出すことがあります。何も保証されていません。あなたは上の写真を参照してください

enter image description here

は、戻る矢印は時々、のonCreate()にONSTART()、時にはonPause()指摘しました。

+0

低メモリは、あなたの活動が破壊さ(とあなたがそれに戻ったときに、その後再作成)されることがありますが、それはsavedInstanceState' '「クリア」しません。実際には、 'savedInstanceState'は書かれたものを持っています。これは、システムが安全に活動を破壊して再作成できるようにするものです。 –

+0

@BenP。 LifeCycycleに基づいてsavedInstanceStateの異なるバージョンがあります。 savedInstanceStateはBundleのインスタンスです。バンドルはデフォルトで永続的ではありません。低メモリでは、onStart()のsavedInstanceStateが破棄された場合、OSはonCreate()のsavedInstanceStateを使用してアクティビティを再作成します。 PersistentBundleを使用して、アクティビティの状態を再開できることを保証する必要があります。 –

+0

'onStart'は呼び出される保証はありませんか? 'onResume'はどうですか? –

0

いいえ、親アクティビティは、いつでもonResume()を呼び出す可能性があるため、破棄することができます。

それは携帯電話のメモリに依存

、のonCreate()を活動Aが前面に出たとき

1

いいえ、onResume()のみが呼び出されることが保証されています。

enter image description here

+0

アクティビティAがすでに破棄されている場合、onCreate()とonStart()は呼び出されますが、onResume()は呼び出されません –

+0

私は、onResumeだけが呼び出されることを保証しました。もう一度呼ば... –

関連する問題