@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
builder.setMessage("onDestroy" + (count++));
builder.create().show();
Log.i(TAG,"ondestroy");
}
/**
* 当activity被再次调用的时候被调用
*/
@Override
protected void onRestart() {
// TODO Auto-generated method stub
super.onRestart();
builder.setMessage("onRestart" + (count++));
builder.create().show();
Log.i(TAG,"onrestart");
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
执行结果,除了logcat的整个过程之外,通过对话框也可以看出整个过程。
当程序的第一个activity开始和用户交互之前,分别依次执行onCreate方法(创建activity),onStart方法(变得可见),onResume方法(开始交互)
然后这个时候点击跳转的按钮,会依次执行onPause方法(程序准备创建目标activity),onStop方法(先前的activity变得不可见),
这个时候已经跳转到目标activity了,这个时候按下返回键,这个时候会调用先前的activity的onRestart方法(当重新返回这个activity的时候),然后onstart,onresume。
不过话又说回来了,目标activity的创建过程是在什么时候创建的呢?由于先前的onPause方法是在准备创建目标activity之前调用的,所以我们猜测onCreate方法是在onPause方法之后调用的。那么其他方法呢?还是log出来吧,log出来之后,发现目标activity的onresume方法(包括onResume)之前的过程都是在原先的activity的onPause和onStop方法之间调用的,这也意味着,当目标activity创建完毕并且准备和用户交互的时候,先前的activity才会变得不可见。
至此,我们的理解确实又上了一个层次了