Android Activity生命周期详解(2)


@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才会变得不可见。

至此,我们的理解确实又上了一个层次了

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/pfsjp.html