Androidアプリ入門 No.59 ライフサイクル Activityを呼び出した際のライフサイクル
Activityを呼び出した際のライフサイクル
次にIntentTest2プロジェクトのMainActivity.javaを以下のように変更する。ログ出力を追加しただけとなる。
package sample.it2; import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; public class MainActivity extends Activity { private EditText urlEditText; private Button browserButton; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.i("IntentTest2", "onCreate"); setContentView(R.layout.main); urlEditText = (EditText) findViewById(R.id.urlEditText); browserButton = (Button) findViewById(R.id.browserButton); browserButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent("net.kuwalab.web", Uri.parse(urlEditText.getText() .toString())); startActivity(intent); } }); } @Override protected void onStart() { super.onStart(); Log.i("IntentTest2", "onStart"); } @Override protected void onResume() { super.onResume(); Log.i("IntentTest2", "onResume"); } @Override protected void onRestart() { super.onRestart(); Log.i("IntentTest2", "onRestart"); } @Override protected void onPause() { super.onPause(); Log.i("IntentTest2", "onPause"); } @Override protected void onStop() { super.onStop(); Log.i("IntentTest2", "onStop"); } @Override protected void onDestroy() { super.onDestroy(); Log.i("IntentTest2", "onDestroy"); } }
IntentTest2を実行するとログは以下の状態となる。この状態はIntentTestを実行したときと同様に、onCreate、onStart、onResumeの順で呼び出される。
そうすると、IntentTest2のonPauseが呼ばれてからIntentTestのonCreate、onStart、onResumeが呼び出される。また、途中にIntentTest2のonStopが呼び出されているのもわかる。
その後、「戻る」ボタンでIntentTestを終了してIntentTest2に戻る。
そうすると、IntentTestのonPauseが呼び出された後に、IntentTest2のonRestart、onStart、onResumeが呼び出される。その後、IntentTestのonStop、onDestroyが呼び出されている。
詳細は後述するが、基本的にActivityが呼び出された場合には元のActivityのonPauseが呼び出される。そして復帰する際にはonResumeから呼び出される。今回の例は呼び出し元のonStopが呼び出されているが、なぜそうなるのかも含めてこの後で解説する。