------ 活动的生命周期 ------
Android是使用任务Task来管理活动的,一个任务就是一组存放在栈里的活动的集合。每当启动一个活动 ,他就会在返回栈中入栈,并处于栈顶位置。而每当我们按下 Back 键或调用 finish()方法去销毁一个 活动时,处于栈顶的活动会出栈,这时前一个入栈的活动就会重新处于栈顶的位置。系统总是会显示处 于栈顶的活动给用户。
活动的生命周期最多可能有四种状态:
>> 运行状态: 活动处于栈顶位置
>> 暂停状态: 活动不再处于栈顶位置,但是仍可见,活动处于暂停状态。系统一般不会回收。
>> 停止状态: 活动不再处于栈顶位置,并不可见,活动处于停止状态。有可能会被系统回收。
>> 销毁状态: 系统会回收处于这种状态的活动,从而保证手机充足。
活动的生命周期,七个回调方法:
>> onCreate():活动第一次被创建的时候调用,一般完成活动的初始化操作,例如:加载布局, 绑定事件等。
>> onStart(): 活动由不可见变为可见。
>> onResume():活动处于运行状态,并且与用户进行交互。
>> onPause(): 系统准备去启动或者恢复另一个活动的时候调用。一般在这个方法中将一些资源 释放掉。但是这个方法的执行速度要快,不然会影响到新的栈顶活动的使用。
>> onStop(): 活动在完全不可见的时候调用。与onPause方法的主要区别在:如果启动的是一个 对话框的活动,那么onPause方法得到执行,而onStop方法不会执行。
>> onDestroy(): 在活动销毁之前调用,之后活动变为销毁状态。
>> onRestart(): 活动由停止状态变为运行状态之前调用。
解决保证活动被系统回收之后出现数据丢失的问题:
Activity提供了一个onSaveInstanceState()回调方法,解决临时数据保存问题。例子:
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
String tempData = "Something you just typed";
outState.putString("data_key", tempData);
}
启动活动读取临时数据代码,在onCreate方法中实现:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
if (savedInstanceState != null) {
String tempData = savedInstanceState.getString("data_key");
}
……
}