2017-01-07 16 views
0

私は、アクティビティが最初に作成されるときに、そのonCreate()メソッドが機能することを知っています。インテントがアクティビティを開始した後、どのメソッドが呼び出されますか?

は意図を介して他の活性(secondActivity.java)を開始し、その第二の活性が意図介して再び主な活動を開始する主な活動があると仮定する。私の質問は、onRestart()メソッドがインテントを受け取った後にメインアクティビティを呼び出すか、onCreate()メソッドが呼び出されたかどうかです。

ありがとうございます!ここで

+2

なぜそれを試してみませんか?ただ、メソッドをオーバーライドし、スーパーを呼び出す....とmethodNameの –

+0

を記録私がやったとのonCreateメソッドが呼び出されたとのonCreateがライフサイクルを通じて一度だけ呼び出されるため、それは、すべきではないと私は混乱していました。 –

+0

しかしCommonsWareの答えはすべてを明確にしました。 –

答えて

3

私の質問は、onRestart()メソッドがインテントを受け取った後にメインアクティビティが呼び出されるか、またはonCreate()メソッドが呼び出されるかどうかです。

これは、メインアクティビティの新しいインスタンスが作成されるかどうかによって異なります。デフォルトでは

、1になります。その場合、メインアクティビティの新しいインスタンスはonCreate()で呼び出されます。 オリジナルの主なアクティビティのインスタンスは単独で残されます。

Intentフラグ(例:FLAG_ACTIVITY_REORDER_TO_FRONT)またはマニフェスト設定を使用して、メインアクティビティの元のインスタンスをフォアグラウンドに戻すことができます。その場合は、元のインスタンスは、(バックフォアグラウンドに活動をもたらしたstartActivity()で使用Intentを提供するために)onNewIntent()で呼び出されます。また、フォアグラウンドに戻ってくるの一環としてonRestart()onStart()、およびonResume()と呼ばれるべきです。

+0

ありがとう!それで、メインの元のインスタンスをフォアグラウンドにするか、メインの別のインスタンスを作成するだけでいいのですか? –

+3

@RohanBhatia:それはあなた次第です。アクティビティを再利用するとメモリが節約されます。しかし、ある程度までは、ナビゲーションをどのように設定するかによって異なります。新しいインスタンスを作成する場合、アクティビティシーケンスはM - > S - > M2(M =メイン、S =セカンド、M2 =メインの2番目のインスタンス)です。そして、ユーザーがM2からBACKを押すと、Sに進み、SからBACKを押すと、Mに行きます。スタックを並べ替えてMを再利用すると、ユーザーがMからBACKを押すとSに進み、SからBACKを押すとアプリケーションを終了します。 – CommonsWare

1

ドキュメントからAndroidのライフサイクルからのイメージは以下のとおりです。

Android life cycle

2番目のアクティビティonPause()を起動すると、等がonCreate()最初のアクティビティに呼び出されるというように呼ばれます2番目の活動について。上の図のように、onRestart()を押すと、最初のアクティビティで呼び出されます。

+0

私はこのイメージを見ました。これは役に立たない。 –

+0

その間にもう少し詳細を追加しました。 – rekire

0

あなたはonCreate()メソッドが呼び出され、新たな意図を開始した場合。

+0

あなたは確信していますか?アンドロイドの開発者サイトによれば、アクティビティの全ライフタイムは、onCreate(Bundle)の最初の呼び出しからonDestroy()の最後の呼び出しまでの間に発生します。 –

+0

http://stackoverflow.com/a/41522480/3939085私は彼のawnserに連絡します – Malik

関連する問題