一、Activity的生命周期
1.启动Activity:系统会先调用onCreate方法,然后调用onStart方法,最后调用onResume,Activity进入运行状态。
2.当前Activity被其他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。
生命周期图流程图
Activity的几种状态:
1、运行状态(Resumed或Running状态):此时该Activity位于屏幕的最上层(系统堆栈中的最顶端),并且有用户焦点。
2、暂停状态(Paused状态):此时的Activity被另外一个Activity所覆盖,并失去了用户焦点,但该Activity仍然处于可见时,该状态就属于暂停状态,处于Paused状态的Activity依然是alive的,并没有从系统中消失(该Activity本身所有的状态及数据都还存在,也跟窗口管理程序WindowManager保持联系),处于这种状态的Activity,当系统的内存不够用时,系统会自动判断,把优先级较低的Activity删除。
3、停止状态(Stop状态):当一个Activity完全被另外一个Activity所覆盖,处于不可见时,该Activity就处于Stop状态;但该Activity仍然保有全部的状态及数据,但是因为不再被使用者看见,所以它的画面是被隐藏起来的,当系统内存不足时,这种状态的Activity是最优先被系统考虑拿来释放内存的。
启动另外一个Activity
Intent i = new Intent(Activity1.this,Acvitity2.class)
i.putExtra("key", "value");// 向Activity2中传递数据
// 传递数据的另外一种形式
Bundle bundel = new Bundel();
bundel.putString("key2", "value2");
i.putExtras(bundel);
//Activity2获取数据的了两种形式
String value = getIntent().getStringExtra("key");
Bundle bundel2 = getIntent().getExtras();
String value2 = (String) bundel2.get("key2");
startActivity(i);// 启动Activity2
/* 启动Activity2,并可以Activity2关闭时获取返回的数据
* 要想获取返回数据需要重载onActivityResult()方法
* 并在Activity2中调用setResult()方法
*/
startActivityForResult(i,0);
想要接收Activity返回的数据,需要重写下面的方法
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
}