Android基础知识05—活动的生命周期

------ 活动的生命周期 ------

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");  

   }     

  ……  

}    

posted @ 2016-07-17 21:22  前端人生  阅读(165)  评论(0编辑  收藏  举报