2012-04-01 7 views
4

アクティビティ1からアクティビティ1をこの方法で起動した場合:startActivity(Activity2);最初に実行するもの:onStop()(アクティビティ1)またはonStart()(アクティビティ2)?Androidのアクティビティライフサイクル:新しいアクティビティが開始されたときの状態の注文

同時にまたは順番に機能しますか?相次いでいけば、最初は何ですか?

一般的に:この注文が存在する場合、最初のアクティビティが2番目に開始するときのアクティビティの状態の順序は何ですか?

+0

activity1のonStop()とactivity2のonStart()をオーバーライドして、いくつかのロギングを入れ、最初にどのロギングが来るのかを確認します。 – hovanessyan

+0

http://stackoverflow.com/a/8516056/265167 –

答えて

3

キーはアクティビティの開始方法を理解することです。あなたがstartActivity()メソッドにIntentを公開するときは、システムにこのアクティビティを開始してください。次のシステムはActivity2を開始しようとし、Activity1にメッセージを送信します。注文は不確定で、状況によって異なる場合があります。

両方の活動は、この同じプロセス内で動作するとき、私のanwerは、状況に間違っていたように見えます(アプリ) としてはダニール・ポポフを指摘:https://developer.android.com/guide/components/activities/activity-lifecycle.html(コーディネート活動セクション)

+3

注文が確定しました - http://developer.android.com/guide/components/activities.html#CoordinatingActivities –

+1

Androidデベロッパーのウェブサイトが更新され、「調整活動」セクションはhttps://developer.android.com/guide/components/activities/activity-lifecycle.html – Sungam

0

ログを使用してログをログに記録します。

Log.v("STATE", "Pause...and so on"); 
1

我々は秒に最初のアクティビティから移動史上、その後 onPause()メソッドが呼び出された後にonStop()が呼び出され、次に2番目のアクティビティのonCreate()メソッドが呼び出され、続いてonStart()、次にonResume()が呼び出されます。また

バックキー押して、バックfirstactivityにナビゲート

最初のアクティビティのメソッドonRestart()がONSTART続いて呼び出されonPause()は、第2の活性方法は、次にonStop(続く)と呼ばれています()次にonResume()を呼び出します。

+0

私のアプリケーションにいくつかのロギングコードを追加しましたが、別の画像が表示されています:1)Activity1 onPause()2 )Activity2 onStart 3)activity2 onResume()4)Activity1 onStop()。 –

9

ドキュメントによると、Activity2のonStartはActivity1のonStopの前に呼び出されます(または、必要に応じて、Activity2のonStartがActivity1のonStopを呼び出す前に終了するのを待ちます)。

​​から:

ライフサイクルコールバックの順序はよく2つのアクティビティが同じプロセスであり、一方が他方を開始する場合には特に、定義されています。アクティビティAがアクティビティBを開始したときに発生する操作の順序を次に示します。

アクティビティAのonPause()メソッドが実行されます。 アクティビティBのonCreate()、onStart()、およびonResume()メソッドが順番に実行されます。次に、アクティビティAが画面に表示されなくなったら、そのonStop()メソッドが実行されます。

+0

Androidデベロッパーのウェブサイトが更新され、「調整活動」のセクションはhttps://developer.android.com/guide/components/activities/activity-lifecycle.htmlにあります – Sungam

1

次にライフサイクル呼び出しは次のようであると言う活性Aが(意図)方法StartActivityを呼び出すことにより、アクティビティBを開始してみましょう: -

  • OnCreate関数()の開始に
  • A()
  • A onResume()

startActivityためのボタンのクリック(意図)

  • A onPause()

  • B ONSTART()

  • B onResume()

  • A onStop()

... ..............戻るボタンを押した場合Bは、次に、ライフサイクル・コールがされる活性...

  • B onPause()

  • A onRestart()

  • A ONSTART()

  • A onResume()

  • b onDestory()

今、1つの以上のシナリオ

  • A "活動から活動Bに()メソッドをボタンのクリックに(意図)StartActivityを呼び出し、ONSTART内仕上げ()メソッドを使用することにより、開始アクティビティB" onPause()

  • B ONSTART()

  • A onResume()

  • B onStop()

  • B onDestory()

0

ライフサイクルコールバックの順序が明確に定義され、2つのアクティビティが同じプロセスであり、一方が他方を開始する場合に特に。アクティビティAがアクティビティBを開始したときに発生する操作の順序を次に示します。

アクティビティAのonPause()メソッドが実行されます。アクティビティBのonCreate()、onStart()、onResume()メソッドは順番に実行されます。 (アクティビティBにはユーザフォーカスがあります。)次に、アクティビティAが画面上に表示されなくなると、そのonStop()メソッドが実行されます。

関連する問題