android开发 - Activity生命周期

本章主讲Activity的生命周期

技术分享


Activity整个生命周期有四种状态,7个方法,3个嵌套循环 


状态:

1.  Activity/Running 活动状态

       指的是当前用户正在交互的activity状态

2. Paused                  暂停状态

       指的是当前activity可见,但是被吐司或者对话框遮罩时状态

3. Stopped                停止状态

       指的是被新的创建的activity遮挡时的状态,它保留了之前的操作信息和状态,但是如果系统内存不够,可能会被killed

4. Dead                     非活动状态

       指的是当activity尚未启动,或者被系统回收时处于非活动状态,可以手动调用finish()方法,终结activity     


生命周期:

1. onCreate();

                在activity第一次创建时被调用,可以做一些变量初始化,绑定数据,显示View视图

2. onStart();

                创建完activity后,开始显示视图到界面上

3. onRestart();

               当activity停止,或者中断后,重新显示视图时,会调用该方法

4. onResume();

                视图在界面显示后,可以与用户交互了

5. onPause();

               当跳转另一个activity时,或者停止前,或者销毁前调用

6. onStop();

               当被另一个activity遮挡时调用,

7. onDestroy();

               当activity销毁时调用


嵌套循环:

1. activity完整生命周期

     从onCreate()    到   onDestroy()

2. activity可视生命周期

    从onStart()        到  onStop()

3. activity前台生命周期

    从onResume()  到     onPause();


例如:使用LogCat打印生命周期 过程是

 1.完整生命周期

    onCreate()     ->     onStart()    ->   onResume()       ->    onPause()    ->    onStop()    ->   onDestroy()

2. 运行activity,生命周期过程是 

    onCreate()  ->  onStart()  ->   onResume()  

3. 横竖屏切换时生命周期时 

    onSaveInstanceState()  -> onPause()   ->  onStop()  ->  onDestroy()  ->  onCreate()  ->  onStart()  -> onRestoreInstanceState()   -> onResume

4.当我们在AndroidMenifest.xml中的相应的activity中添加android:configChanges="orientation"时

   再横竖屏切换,生命周期只会执行onConfigurationChanged()方法,

5. 一个activity跳转另一个activity声明周期过程是

    第一个activity   

           onSaveInstanceState()  -> 

           onPause()  ->  

           开始第二个activity

           onCreate() ->

           onStart()    -> 

           onResume()  ->

            第一个activity停止了

           onStop()   ->

           此时,返回第一个activity

           onRestart()  ->

           onStart()      ->

           onResume()  ->

          此时,第二个activity销毁了

          onStop()   ->

          onDestroy()  

          


总结:activity跳转到新的activity时,旧的activity会被保存现场,并且停止了,新的activity被创建了,如果返回旧的activity时,新的activity会被销毁掉了,旧的activity会执行onRestart()方法,然后显示界面,并可交互状态,所以onCreate()方法只会被调用一次,但是在横竖屏切换时,那就相当于重新执行了一遍生命周期,销毁横竖屏前的对象,重新创建新的activity,如果在清单中配置了android:name="orientation"那么,就会执行onConfigurationChanged()方法,并且生命周期不会重新执行一遍





郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。