1.启动Activity:系统会先调用onCreate方法,然后调用onStart方法,最后调用onResume,Activity进入运行状态。
2.当前Activity被其他Activity覆盖其上或被锁屏:系统会调用onPause方法,暂停当前Activity的执行。
3.当前Activity由被覆盖状态回到前台或解锁屏:系统会调用onResume方法,再次进入运行状态。
4.当前Activity转到新的Activity界面或按Home键回到主屏,自身退居后台:系统会先调用onPause方法,然后调用onStop方法,进入停滞状态。
5.用户后退回到此Activity:系统会先调用onRestart方法,然后调用onStart方法,最后调用onResume方法,再次进入运行状态。
6.当前Activity处于被覆盖状态或者后台不可见状态,即第2步和第4步,系统内存不足,杀死当前Activity,而后用户退回当前Activity:再次调用onCreate方法、onStart方法、onResume方法,进入运行状态。
7.用户退出当前Activity:系统先调用onPause方法,然后调用onStop方法,最后调用onDestory方法,结束当前Activity。
下面以实际例子说明:
界面布局代码就不发了,没什么,就Textview和Button两组控件。
MainActivity类中主要代码
public class MainActivity extends Activity implements OnClickListener {
private Button bt1;
private Button bt2;
private static final String TAG="MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.i(TAG, "MainActivity.onCreate");
bt1=(Button)this.findViewById(R.id.bt1);
bt2=(Button)this.findViewById(R.id.bt2);
bt1.setOnClickListener(this);
bt2.setOnClickListener(this);
}
protected void onDestory(){
super.onDestroy();
Log.i(TAG,"MainActivity.onDestory");
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.bt1:
Intent intent=new Intent();
intent.setClass(MainActivity.this, SecondActivity.class);
startActivity(intent);
break;
case R.id.bt2:
Intent intent1=new Intent();
intent1.setClass(MainActivity.this, ThirdActivity.class);
startActivity(intent1);
break;
default:
break;
}
}
protected void onStart(){
super.onStart();
Log.i(TAG, "MainActivity.onStart");
}
protected void onResume(){
super.onResume();
Log.i(TAG, "MainActivity.onResume");
}
protected void onPause(){
super.onPause();
Log.i(TAG, "MainActivity.onPause");
}
protected void onStop(){
super.onStop();
Log.i(TAG, "MainActivity.onStop");
}
protected void onRestart(){
super.onRestart();
Log.i(TAG, "MainActivity.onRestart");
}
}
SecondActivity类中主要代码
public class SecondActivity extends Activity{
private static final String TAG="MainActivity";
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second);
Log.i(TAG, "SecondActivity.onCreate");
}
protected void onDestory(){
super.onDestroy();
Log.i(TAG,"SecondActivity.onDestory");
}
protected void onStart(){
super.onStart();
Log.i(TAG, "SecondActivity.onStart");
}
protected void onResume(){
super.onResume();
Log.i(TAG, "SecondActivity.onResume");
}
protected void onPause(){
super.onPause();
Log.i(TAG, "SecondActivity.onPause");
}
protected void onStop(){
super.onStop();
Log.i(TAG, "SecondActivity.onStop");
}
protected void onRestart(){
super.onRestart();
Log.i(TAG, "SecondActivity.onRestart");
}
}
ThirdActivity类中主要代码
public class ThirdActivity extends Activity{
private static final String TAG="MainActivity";
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.third);
Log.i(TAG, "ThirdActivity.onCreate");
}
protected void onDestory(){
super.onDestroy();
Log.i(TAG,"ThirdActivity.onDestory");
}
protected void onStart(){
super.onStart();
Log.i(TAG, "ThirdActivity.onStart");
}
protected void onResume(){
super.onResume();
Log.i(TAG, "ThirdActivity.onResume");
}
protected void onPause(){
super.onPause();
Log.i(TAG, "ThirdActivity.onPause");
}
protected void onStop(){
super.onStop();
Log.i(TAG, "ThirdActivity.onStop");
}
protected void onRestart(){
super.onRestart();
Log.i(TAG, "ThirdActivity.onRestart");
}
}
Activity生命周期运行步骤如下
1.运行程序,进入Activity
MainActivit启动了onCreate、onStart、onResume方法运行程序,Log日志如下图
2.点击进入第二个Activity
此时,Log日志显示如下图
3.点击返回键,回到MainActivity
此时Log日志显示如下图
4.点击进入第三个Activity,显示如下
Log日志显示如下
5.点击返回键,回到MainActivity
Log日志显示如下
6.点击home键回桌面
Log日志显示如下
从头到尾都没有调用onDestory方法,这是为什么,请大神赐教?