★Activity的生命周期
首先是Ativity一共有7个生命周期,下面是它的7个生命周期
public class Activity extends ApplicationContext{
protected void onCreate(Bundle savedInstanState);
protected void onStart();
protected void onRestart();
protected void onResume();
protected void onPause();
protected void onStop();
protected void onDestroy();
}
我相信大家第一次看见这些方法会感到陌生,但是第一个方法相信大家都见过,我们创建一个Activity,编写代码的时候都会先调用onCreate方法,至于为什么我等一下会讲。
public class Activity extends ApplicationContext{
protected void onCreate(Bundle savedInstanState);
//在Activity第一次被创建的时候就会被调用
protected void onStart();
//当这个Activity能被我们看见的时候就会被调用
protected void onRestart();
//再次回到上一个Activity是被调用
protected void onResume();
//当这个Activity被获得焦点的时候被调用
protected void onPause();
//启动另一个Activity的时候就会调用上一个activity的这个方法
protected void onStop();
//当上个activity被第二个Activity完全遮挡住了会被调用
protected void onDestroy();
//被销毁是调用
}
下面是这几个活动周期的关系图:
我相信很多学习视频在讲Activity的周期的时候都会编写一个测试程序,写出上面的7个方法然后通过打印从logcat中查看多个Activity进行跳转的时候这些方法是怎么被调用的。这里我就不多说了,最后的结果是:
当Activity1打开的时候会调用onCreate();onStart();onResume()这三个方法当Activity1跳转到Activity2时,首先是会调用Activity1的onPause()方法,然后调用Activity2的onCreate();onStart();onResume()这三个方法,最后再调用Activity1的onStop()方法,如果点击返回这个时候就会调用Activity2的onPuase()方法然后注意这个时候不是调用Activity1的onCreate()方法,而是调用Activity1的onRestart()方法了,然后调用Activity1的onStart();onResume()方法,最后调用Activity2的onDestroy()方法,还有这个时候又跳转到Activity2是又会调用第一次跳转调用的方法,不会调用onRestart()方法,因为返回Activity1的时候Activity2调用了onDestroy()方法,被销毁了,还有就是这里要强调的是如果Activity没有被遮挡完,比如弹出一个对话框没有完全把Activity挡完的话,Activity1就不会调用onPuase()方法。
这几个活动周期对后面的开发也是很重要,会经常涉及到这方面的问题,就说到这里了,下次再会。