zoukankan      html  css  js  c++  java
  • 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()方法。

  • 相关阅读:
    html04
    html03
    html02
    html01
    通过脚本获取form表单的数值而不是submit
    myeclipse自带的数据库查看文件
    如何实现数组和List之间的转换?
    Array和ArrayList有何区别?
    ArrayList和LinkedList的区别是什么?
    如何决定使用HashMap还是TreeMap?
  • 原文地址:https://www.cnblogs.com/tangZH/p/7676478.html
Copyright © 2011-2022 走看看