android 基础知识 生命周期

1:Activity的生命周期的描述图1如下:

   https://img-blog.youkuaiyun.com/20161101104822479?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center

图1:activity 生命周期图

2:Activity生命周期的详细叙述:

      (1):onCreate:

                                   表示activity正在被创建,生命周期中第一个方法,可以做些初始化工作,

                                   setContentView,加载界面资源,初始化activity所需的数据!

      (2):onRestart:

                                    标识activity正在重新启动,一般情况下,activity从不可见状态变为可见状态时,

                                    onRestart就会被调用,一般情况下是由用户的行为导致的,比如用户按home键 

                                    切回到桌面或者用户打开了一个新的activity,此时当前的activity就会被暂停,

                                    onPause和onStop被执行了,接着用户又回到了该界面。

     (3):onStart:         

                                   表示该activity正在被启动,此时activity可见了,但是运行在后台,无法和用户进行交互。


     (4):onResume:

                                    表示activity已经可见了,并且出现在前台并开始活动,onStart和onResume都表示activity可见,

                                   但是onStart时activity还在后台,onResume时activity显示在前台!

     (5):onPause: 

                                  表示Activity正在被停止,正常情况下,紧接着onStop就会被调用,特殊情况下,如果这时候快速地回到当前的界面时,

                                  onResume就会被调用,这是一种极端情况,不容易被出现.正常情况下,此时可以存储写数据,停止动画等操作,

                                  但是注意不能够太耗时,因为会影响到新的activity的展示,onPause必须先执行完,新的activity的onResume才会被执行!

    (6):onStop:        

                                表示即将被停止,此阶段可以做一些稍微重量级的一些回收工作,同样不能太耗时!


    (7):onDestroy:  

                               表示即将被销毁,这是Activity生命周期中的最后一个回调,这里可以做一些回收工作和最终的资源释放!


    (8)额外提示:

                           同时有一些:onNewIntent:此调用和启动模式有关,onCreate和onStart不会被调用!
                           onSaveInstanceState:

                                                  保存实例的状态 将当前的activity的状态保存到Bunddle参数中
                           onRestoreInstanceState:

                                                 恢复之前的实例的一些状态:从Bunddle参数中获取一些状态值!


     (9)onStop时activity被系统回收:

                         当activity被系统回收,等再次打开时,生命周期和回调过程和(1)一样,只是生命周期一样,不代表所有的过程一样!


     (10):onStart和onResume,onPause和onStop有什么实质的不同:

                        onPause和onStop主要是从是否界面可见的角度来回调的,而onStart和onResume主要是从是否在前台的角度去描述的!

  

     (11)ActivityA跳转到ActivityB中的:A中的onPause先执行还是B中的onCreate,onStart,onResume先执行,以及A中的onPause和A的onStop有执行先后顺序吗?

                        结论:旧Activity中的onPause先执行成功之后,才会启动新Activity!


3:异常情况下的生命周期:   

  3.1:资源相关的系统配置发生改变导致activity被杀死并重新创建!     

            默认情况下Activity的屏幕方向发生改变后,当前activity被销毁,重新创建。过程如图3.1所示:

               https://img-blog.youkuaiyun.com/20161101113304427?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center      

图3.1       

             注意:当前的Activity生命周期函数执onPause,onStop,onDestroy顺序执行,同时onSaveInstanceStateonStop之前被执行

                         但是与onPause顺序执行不确定!继而会执行Activity的onCreate,onStart,以及onRestoreInstanceState函数,onResume函数!
 
             注意:当系统配置发生改变时,导致activity被重新创建,怎么不让其重新创建,在资源清单文件中:

                    android:configChanges="orientation",其常用的“keyboardHidden”,“locale”      


     3.2:资源内存不足导致低优先级的activity被杀死!


     3.3:onSaveInstanceState与onRestoreInstanceState相关原理:

                     当Activity有异常重新创建时,系统会默认保存当去的activity的视图结构,并且在重启activity时会为我们恢复这些数据,

              其实View和Activity一样,都有继承 onSaveInstanceState和onRestoreInstanceState,系统能够自动的为View进行恢复数据!


                     关于保存和回复View的层次结构,系统的工作流程是这样的:首先Activity被意外地终止时,

               Activity会调用onSaveInstanceState函数去保存数据,继而Activity会去委托PhoneWindow去保存数据,

              PhoneWindow又会委托DecordView去保存数据,最后DecordView又会一一通知子节点去保存数据,

              这是一种典型委托思想!上层委托下层,父容器委托子容器!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值