生命周期的基本理解
首先必须得清楚什么是生命周期。我们每个人从出生的到死亡,几乎每天都要吃饭、睡觉、打豆豆(个例除外…),Activity也一样,有被创建、开启、暂停、停止、摧毁等等的时候,这些就构成了Activity的生命周期。下面是官方给出的生命周期图。
其次,我们要知道生命周期中的这些动作是需要生命周期函数来完成的
- onCreate():第一次创建时调用
- onStart():Activity可见时调用该函数
- onResume():Activity开始准备与用户交互时调用该方法
- onPause():当系统即将启动另一个Activity之前调用
- onStop():当Activity变得不可见时调用
- onDestroy():当Activity被销毁之前调用
- onRestart():当Activity再次启动之前调用
以上是整个生命周期中涉及到的七个函数方法,我们可以通过具体代码来对这些函数方法进行具体的认识。
整个Demo的思路:创建两个Activity,在第一个中设置一个Button,通过点击这个Button可以开启第二个Activity,然后按返回键返回到第一个Activity,通过第一个Activity与第二个之间的互相切换来了解生命周期的过程。具体代码如下:
public class MainActivity extends ActionBarActivity {
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button)findViewById(R.id.button);
button.setOnClickListener(new ButtonListener());
System.out.println("MainActivity:onCreate");
}
class ButtonListener implements OnClickListener{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//启动一个Activity的方法
Intent intent = new Intent();
intent.setClass(MainActivity.this, AnotherActivity.class);
startActivity(intent);
}
}
@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
System.out.println("MainActivity:onStop");
}
在这里我们可以看到在MainActivity中的Button的监听器中开启了另一个活动AnotherActivity,并且覆盖了所有的生命周期函数方法,并在MainActivity的每个方法中打印”MainActivity:+该方法”,在AnotherActivity的每个方法中打印”AnotherActivity:+该方法” ,以此来方便观察在这两个活动互相切换时具体调用的哪个活动中的哪个方法。
我们来看看Android模拟机上的效果以及Logcat的打印内容
这里我们可以看到刚进入程序时,调用MainActivity的onCreate(),onStart(),onResume()三个方法
点击切换按钮之后启动AnotherActivity,在这之前调用了MainActivity的onPause()方法,然后调用AnotherActivity的onCreate(),onStart(),onResume()三个方法,接着调用了MainActivity的onStop()方法(注意:MainActivity并没有销毁,只是目前被AnotherActivity遮挡了起来)
最后按返回键又返回第一个界面,即MainActivity,跟上次一样,先调用AnotherActivity的onPause()方法,接着调用MainActivity的onRestart(),onStart(),onResume(),这块要注意,MainActivity之前并没有被摧毁,只是调用了onstop(),所以此处不需要调用onCreate(),直接调用OnRestart()就可以,紧接着调用AnotherActivity的onStop(),onDestroy()两个方法,第二个活动被摧毁。