• Android 生命周期初探


    Android初学者大概都会学习到组件生命周期的知识,onCreate()->onstart()->onResume()->onPause()->onStop()->onDestroy() 的流程都已熟悉。最近在项目中碰到一个难解决的bug,最后发现原来跟组件生命周期有一定的关系,在此做一点分享。

    单个Activity的生命周期,毫无疑问是按照上面的顺序来的,但是从一个Activity跳转到另一个Activity的过程中呢?是不是第一个Activity先走完onPause()->onStop->onDestroy()->  ,然后第二个Activity再走onCreate()->onStart()->onResume() ?

    这应该属于正常思维,在昨天以前,我也一直以为生命周期是这样走的。可是小小实现一下,发现和预想中的有些差别。

    代码很简单,在各个周期函数中打上log即可,就不贴出了。第一个Activity称为first,第二个Activity称为second。在first中添加一个按钮,点击后通过Intent跳转到second。打出log发现,从first跳转到second的流程如下:

    -->first.onPause()
    -->second.onCreate()
    -->second.onStart()
    -->second.onResume()
    -->first.onStop()

    也就是说第一个界面在执行完onPause()后,第二个界面就开始走onCreate()直到onResume()了,然后第一个界面继续走接下来的onStop()。如果是跳转后finish()掉第一个界面,还会往下走onDestroy();

    在second点击back按钮,走的流程如下:
    -->second.onPause()
    -->first.onRestart()
    -->first.onStart()
    -->first.onResume()
    -->second.onStop()
    -->second.onDestroy()

    同第一次跳转基本类似。

    由以上的实验可知,当Activity进行跳转时,两个Activity的生命流程并不是按照直线顺序进行的,而是中间有一部分交错。头一个Activity走完onPause()后,第二个Activity就会走完它的生命周期,接着第一个Activity继续走onStop(),onDestroy()。

    因此,在项目中应该注意在数据处理时考虑到生命周期的这一特性,避免造成错误。
  • 相关阅读:
    1021 个位数统计 (15 分)
    10. HttpServletResponse接口
    9. HttpServletRequest接口
    11. jQuery 获取元素尺寸
    10. jQuery 对元素属性的操作~ 一篇就够.
    7. HttpServlet类
    6 .数据库-增删改
    6. GenericServlet类
    9. jQuery 的节点操作
    8.jQuery 的 基本绑定事件操作
  • 原文地址:https://www.cnblogs.com/xutao1988/p/2391243.html
Copyright © 2020-2023  润新知