2015.11.4  上午================


  Activity 的生命周期 


  *对于Andoird开发者来讲非常重要


  了解生命周期,可以写出更流畅的程序并减少资源的浪费。






一、回退栈(返回栈)


    android中的活动时层叠的状态,新的活动会覆盖到原来的活动之上。


    按下Back键,最上层的活动销毁,下面的一个活动就会重新显示出来。




    Android是使用Task(任务) 来管理活动的,一个Task就是一组存放在栈中的活动,


    这个栈称之为回退栈 




二、Activity的四种状态




    1.运行状态:


      当活动处于栈顶时或者获得用户的焦点时


      此时就是运行状态




    2.停止状态:


      当一个Activity被完全覆盖时,用户不可见。


      这个活动还有可能存在,但是有可能被回收。(当系统内存不足时回收)




    3.暂停状态:


       当一个Activity不再处于栈顶时,但依然可见,此时就是暂停状态。


       当系统内存不足时有可能被回收。




    4.销毁状态


        当一个Activity从回退栈中移除时,就变成了销毁状态,会被系统回收。






三、Activity生命周期方法


    1.onCreate() 创建


        这个方法会在Activity第一次被创建时调用,用于一些初始化工作和加载布局。




    2.onStart()  启动


        这个方法在活动由 不可见状态 变为 可见状态 时被调用


        停止状态---->运行状态




    3.onResume() 继续


        这个方法在活动变为 可见状态前 被调用


        onResume()---->运行状态




    4.onPause()  暂停


        这个方法在 准备启动 或 恢复 另一个活动时会被调用




    5.onStop()   停止


        这个方法在 完全不可见时 会被调用


        运行状态------>停止状态




    6.onDestory()


        这个方法在活动被销毁之前调用。




    7.onRestart()


        这个方法在活动由 停止状态变为运行状态时调用。




四、活动被停止时,保存状态


    当活动停止时,有可能被系统回收,如果此时有一些数据保存在该活动中


    这些数据也会消失。




    Activity 为我们提供了一个 onSaveInstanceState


    当Activity被回收时会调用这个方法,主要用于保存数据。




    1.使用onSveInstanceState中的参数 Bundel 来保存数据




    2.调用Bundle.putXX("key","value")来保存数据




    3.在onCreate(Bundle savedInstaceState)方法中


       使用XX value =  savedInstaceState.getXX("key");




       ======================2015.11.4  下午================


五、活动的四种启动模式


     *设置启动模式:


        在<activity>标签中 android:launchMode 




     1.standard 标准 默认的启动模式


        每当启动一个活动,这个活动都会出现在栈顶的位置,


        并且每次启动都会创建该活动的一个对象。




     2.singleTop 


        这种模式当活动已经在栈顶时,并不会创建该活动的一个新的对象。




     3.singleTask


       这种模式在每次启动活动前会检查回退栈中是否有该活动的对象。


       如果有会直接使用,并且把在这个活动之上的所有活动统统踢出。




     4.singleInstance


       这种模式启动的活动会在一个新的回退栈中,用来解决活动共享的问题




========================================================================================