对于今天所学的Activity生命周期做一个简单的总结。
要理解下图的真正含义(本张图来自http://developer.android.com/reference/android/app/Activity.html):
以上共有onCreate(),onStart(),onResume(),onPause(),onStop,onDestory(),onRestart()这7个回调函数,当一个activity启动时首先调用的是onCreate()->onStart()->onResume(),这是毋庸置疑的,那么何时会调用onPause(),onStop()呢?
现在来假设一个OldActivity,和NewActivity,当从OldActivity中跳转至NewActivity时,OldActivity会进去Pause状态,继而NewActivity会进入Create,Start,Resume状态,之后OldActivity就会进入Stop状态;按返回键时从NewActivity返回OldActivity,NewActivity会Pause,OldActivity会Restart,Start,Resume,之后NewActivity进入Stop,最后就会被Destory。
总结以上的规律,当启动新的Activity时,当前的Activity会暂停当前的活,做别的事,当别人的活干完后,继续自己的事。
当按home键时,当前的Activity会pause,stop,但是不会destory;如果进程被杀死,再通过home进入会重新来过,从onCreate开始。。。
源程序如下:
public class OldActivity extends Activity {
private Button btn1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
this.btn1 = (Button) findViewById(R.id.btn1);
this.btn1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Intent intent = new Intent(OldActivity.this,
NewActivity.class);
startActivity(intent);
}
});
Log.i("thm hello", "....onCreate");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.i("thm hello", "....onDestory");
}
@Override
protected void onPause() {
super.onPause();
Log.i("thm hello", "....onPause");
}
@Override
protected void onRestart() {
super.onRestart();
Log.i("thm hello", "....onRestart");
}
@Override
protected void onResume() {
super.onResume();
Log.i("thm hello", "....onResume");
}
@Override
protected void onStart() {
super.onStart();
Log.i("thm hello", "....onStart");
}
@Override
protected void onStop() {
super.onStop();
Log.i("thm hello", "....onStop");
}
}
public class NewActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_forturn);
Log.i("thm hello", "new onCreate");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.i("thm hello", "new onDestory");
}
@Override
protected void onPause() {
super.onPause();
Log.i("thm hello", "new onPause");
}
@Override
protected void onRestart() {
super.onRestart();
Log.i("thm hello", "new onRestart");
}
@Override
protected void onResume() {
super.onResume();
Log.i("thm hello", "new onResume");
}
@Override
protected void onStart() {
super.onStart();
Log.i("thm hello", "new onStart");
}
@Override
protected void onStop() {
super.onStop();
Log.i("thm hello", "new onStop");
}
}