• Activity切换的时候生命周期的变化


    之前在做笔试题的时候遇到一个问题:Activity A切换到ActivityB时,A和B的生命周期变化。

    事实上,它们的生命周期变化是这样的:

    1、A的onPause()方法被执行。

    2、B的onCreate()方法,onStart(),onResume()方法被顺序执行。

    3、如果B是不透明的,A将会完全被隐藏,此时A完全不可见,A的onStop()方法就会被执行。

    问题一:为什么要先执行A的onPause方法,再执行B的生命周期方法? 
    问题二:为什么不是执行完A的onStop方法之后再执行B的生命周期方法?

    要先停止A中的操作,比如播放的音乐等等,不然切换到B音乐还在播放。

    若是先执行完A的onStop方法之后再执行B的生命周期方法,会出现黑屏的现象。

     

    生命周期回调的确定的顺序允许管理两个Activity之间的切换信息。例如,当第一个Activity终止时你必须把数据写到数据库中以便下一个Activity能够读取它,那么你就应该在onPause()方法执行期间把数据写入数据库,而不是在onStop()方法执行期间。 
    我们注意到Activity B是在Activity A的onPause()方法执行完之后才执行自己的生命周期的,如果A的onPause()中有非常耗时的代码,那么将会影响到B的启动速度。因此,我们要在onPause()中做尽可能少的工作来提高页面的切换速度。 

     

    接下来我们看另外一种情况:在B中按下返回键回到A,那么生命周期怎么变化呢?

    1、B执形onPause()方法。

    2、A执形onRestart()方法,onStart()方法,onResume()方法。

    3、B执形onStop()方法,onDestroy()方法。

  • 相关阅读:
    Wannafly #4 F 线路规划
    PKUWC2018 随机算法
    noip模拟赛
    php 正则判断是否是手机号码 最新
    Onethink上传服务器后登录不了的问题
    【php中的curl】php中curl的详细解说
    50种网站引流量方式
    mysql ERROR 1045 (28000): 错误解决办法
    织梦DEDE分类信息实现联动筛选(支持多条件多级选项)解决方案
    dedecms新增联动类别后的使用方法
  • 原文地址:https://www.cnblogs.com/tangZH/p/7676478.html
Copyright © 2020-2023  润新知