...->销毁的过程,掌握这些流...">
美文网首页
那些生命的足迹

那些生命的足迹

作者: SnailWalker | 来源:发表于2018-12-06 11:42 被阅读0次

    持续更新......

    1.关于生命周期的一些想法

    生命周期描述的"组件"由创建->...->销毁的过程,掌握这些流程,以及对应流程的特性,不仅有助于我们更好的了解"组件"的生成过程,也有助于我们更好的管理"组件",从而针对不同的生命状态做不同的事,进而达到对app状态维护,性能维护达到最佳效果.
    2.Activity 的生命周期

    Activity生命周期总结

    通常情况下的生命周期


    1.Entire Lifetime :

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

    expand:

    onPause() 做一些存储数据,停止动画工作,但不能太耗时,会影响到新Activity的显示,onPause必须先执行完,新的Activity的onCreate()才会执行

    onStart() / onStop() 可见,但还没出现在前台,无法与用户交互

    onResume() / onPause() 可见且在前台

    2.Visible Lifetime

    onStart() -> onStop()

    当执行onStart回调方法时,Activity开始被用户所见(也就是说,onCreate时用户是看不到此Activity的,那用户看到的是哪个?当然是此Activity之前的那个Activity),一直到onStop之前,此阶段Activity都是被用户可见

    3.Forground Lifetime

    onResume() -> onPause()

    当执行到onResume回调方法时,Activity可以响应用户交互,一直到onPause方法之前


    影响Activity生命周期

    前提 : Activity栈中只有A

    1.Back

    按下Back键,系统返回到桌面,并依次执行A:onPause -> A:onStop -> A:onDestroy

    2.Home

    按下Home键(非长按),系统返回到桌面,并依次执行A:onPause -> A:onStop

    3.Activity A被覆盖或者锁屏或者home

    onPause() -> onSaveInstanceState() -> onStop()

    ------------------------------------------------------------------

    从锁屏状态恢复 :

    从home状态走任务栈恢复:

    onRestart() -> onStart() -> onResume()

    ------------------------------------------------------

    从home状态走点击图标恢复

    onNewIntent() -> onRestart() -> onStart() -> onResume()

    ----------------------------------------------------------------------------

    4.Activity A启动Dialog

    当activity中弹出dialog对话框的时候,activity不会回调onPause。

    然而当activity启动dialog风格的activity的时候,此activity会回调onPause函数


    Activity与Fragment的生命周期方法

    前提: 启动Activity A 中的 Fragment F

    创建过程:

    A onCreate() ->

    F onAttach() -> onCreate() -> onCreateView() -> onViewCreated() -> onActivityCreated() -> onStart()

    A onStart() ->  onResume()

    F onResume()

    destroy销毁过程:

    F onPause() ->

    A onPause() ->

    F onStop() ->

    A onStop() ->

    F onDestroyView() -> onDestroy() -> onDetach() ->

    A onDestroy()

    home键操作返回桌面:

    F onPause() ->

    A onPause() ->

    F onStop() ->

    A onStop()

    home键后从桌面返回界面

    A onRestart() ->

    F onStart() ->

    A onStart() -> onResume()

    F onResume()

    扩展

    1.将Back操作替换为home效果?

    #1.通过startActivity()

    Intent home = new Intent(Intent.ACTION_MAIN);

    home.addCategory(Intent.CATEGORY_HOME);

    startActivity(home);

    #2.直接调用Api

    activity.moveTaskToback(true).

    这个方法直接将当前的Activity所在task移到后台,同时保留activity的顺序和状态

    相关文章

      网友评论

          本文标题:那些生命的足迹

          本文链接:https://www.haomeiwen.com/subject/haqnqqtx.html