一、Activity大致分为以下四种状态:
运行状态:当前Activity位于前台,用户可见,可以获得焦点。
暂停状态:其他Activity位于前台,该Activity依然可见,只是不能获得焦点。
停止状态:该Activity不可见,失去焦点。
销毁状态:该Activity结束,或Activity所在的进程被结束。
图为生命周期以及相关回调方法:
![](https://images2015.cnblogs.com/blog/951277/201606/951277-20160623154727672-112382359.png)
onCreate(Bundle savedStatus):创建Activity时被回调,只在创建时调用一次,用于对该Activity执行初始化。
onStart( ):启动Activity时被回调。
onRestart( ):重新启动Activity时被回调。
onResume( ):恢复Activity时被回调,在onStart()方法后一定会回调此方法。
onPause( ):暂停Activity被回调。例如:用户正在玩游戏,此时有电话打进来,那么我们就需要把游戏暂停,并且保存该游戏的进行状态。
onStop( ):停止Activity时被回调。
onDestroy( ):销毁Activity时被回调。
三、示例:
创建一个Activity实现所有生命周期回调方法:布局中只有两个按钮,一个按钮监听跳转Activity,另一个退出Activity
public class LifeOfActivity extends Activity{
final String TAG="执行的方法是:";
private Button btn_start,btn_finish;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.lifeofactivity);
//当执行onCreate方法时,输出此日志(创建Activity回调)
Log.i(this.TAG,"-创建Activity回调-onCreate--");
//找到按钮
this.btn_start= (Button) findViewById(R.id.btn_start);
this.btn_finish= (Button) findViewById(R.id.btn_finishh);
//为按钮设置监听:
this.btn_start.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent=new Intent(LifeOfActivity.this,MainActivity.class);
startActivity(intent);
}
});
this.btn_finish.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
LifeOfActivity.this.finish();
}
});
}
@Override
protected void onStart() {
super.onStart();
//当执行onStart方法时,输出此日志(启动Activity时被回调)
Log.i(this.TAG,"-启动Activity时被回调-onStart--");
}
@Override
protected void onResume() {
super.onResume();
//当执行onResume方法时,输出此日志(恢复Activity时被回调)
Log.i(this.TAG,"-恢复Activity时被回调-onResume--");
}
@Override
protected void onRestart() {
super.onRestart();
//当执行onRestart方法时,输出此日志(重新启动Activity时被回调)
Log.i(this.TAG,"-重新启动Activity时被回调-onRestart--");
}
@Override
protected void onPause() {
super.onPause();
//当执行onPause方法时,输出此日志(暂停Activity被回调)
Log.i(this.TAG,"-暂停Activity被回调-onPause--");
}
@Override
protected void onStop() {
super.onStop();
//当执行onStop方法时,输出此日志(停止Activity时被回调)
Log.i(this.TAG,"-停止Activity时被回调-onStop--");
}
@Override
protected void onDestroy() {
super.onDestroy();
//当执行onDestroy方法时,输出此日志(销毁Activity时被回调)
Log.i(this.TAG,"-销毁Activity时被回调-onDestroy--");
}
}
总结:
启动Activity时执行:onCreate、onStart、onResume三个方法
![](https://images2015.cnblogs.com/blog/951277/201606/951277-20160623154532672-1440847158.png)
重新启动Activity时执行:onRestart、onStart、onResume三个方法
![](https://images2015.cnblogs.com/blog/951277/201606/951277-20160623154544672-2009326699.png)
当跳转到另一个Activity先后执行:onPause, onStop方法
![](https://images2015.cnblogs.com/blog/951277/201606/951277-20160623154553719-300043461.png)
![](https://images2015.cnblogs.com/blog/951277/201606/951277-20160623154622719-2058180498.png)
当退出Activity时会先后执行: onPause、onStop、onDestroy三个方法
![](https://images2015.cnblogs.com/blog/951277/201606/951277-20160623154637938-56654865.png)
当回调onStart方法后,onResume方法也会被调用,从上面例子也可以简单佐证。