目录
一、Activity生命周期的几个过程
结合图理解这几个过程
在MainActivity,加上几个输出,方便观察现象
验证发现:2 3和4 5执行都差不多
package com.example.ym;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
System.out.println("on Create");
}
@Override
protected void onStart() {
// TODO Auto-generated method stub
System.out.println("on Start");
super.onStart();
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
System.out.println("on Resume");
super.onResume();
}
@Override
protected void onRestart() {
// TODO Auto-generated method stub
System.out.println("on Restart");
super.onRestart();
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
System.out.println("on Pause");
super.onPause();
}
@Override
protected void onStop() {
// TODO Auto-generated method stub
System.out.println("on Stop");
super.onStop();
}
public void BottonBeCliecked(View v){
//设置要跳转的页面
Intent intent = new Intent(this, SecondActivity.class);
Bundle bundle = new Bundle();
bundle.putString("Mydata", "小伟");
bundle.putInt("ID", 101);
intent.putExtras(bundle);
//跳转
startActivity(intent);
}
}
- 启动Activity:系统会先调用onCreate方法,然后调用onStart方法,最后调用onResume,Activity进入运行状态
根据输出可以看出启动的时候确实调用了3个方法 - 当前Activity被其他Activity覆盖其上或被锁屏:系统会调用onPause、onStop方法,暂停当前Activity的执行
- 当前Activity由被覆盖状态回到前台或解锁屏:系统会调用onResume方法,再次进入运行状态
- 当前Activity转到新的Activity界面或按Home键回到主屏,自身退居后台:系统会先调用onPause方法,然后调用onStop方法,进入停滞状态
- 用户后退回到此Activity:系统会先调用onRestart方法,然后调用onStart方法,最后调用onResume方法,再次进入运行状态
- 当前Activity处于被覆盖状态或者后台不可见状态,即第2步和第4步,系统内存不足,杀死当前Activity,而后用户退回当前Activity:再次调用onCreate方法、onStart方法、onResume方法、进入运行状态
- 用户退出当前Activity:系统先调用onPause方法,然后调用onStop方法,最后调用onDestory方法,结束当前Activity
师承上官可编程 —— 陈立臣