美文网首页
onStart()和onResume()/onPause()和o

onStart()和onResume()/onPause()和o

作者: ae12 | 来源:发表于2018-11-06 13:38 被阅读23次

    onStart()和onResume()/onPause()和onStop()的区别?
    先看一下官方声明周期图


    activity_lifecycle.png

    这里应用场景:一般启动app:
    onCreate -onStart() - onResume
    按一下home 键:onPause-onStop
    再从其他页面返回到LoginActivtiy:
    -onNewIntent- onRestart -onStart -onResume

    2.onCeate vs onStart vs onResume
    看stackoverflow上回答:
    https://stackoverflow.com/questions/6812003/difference-between-oncreate-and-onstart
    onCreate :
    called when the actiivty first created,do create views bind data to list etc.
    参数Bunldel上次被异常情况销毁时保存的状态信息

    3.onStart()和onResume()/onPause()和onStop()的区别?

    onStart /onStop 从可见的角度回调的; 而onResume/onPasue 从是否位于前台的角度回调的,而在实际应用中没什么区别。

    总之,记住
    onStart 可见不可点击 onResume 可见可点击;
    onPause 可见不可点击(比如弹出对话框)
    onStop 不可见

    4.Activity A启动另一个Activity B会回调哪些方法?
    如果Activity B是完全透明呢?如果启动的是一个Dialog呢?
    一般情况,当用户打开一个新的界面或是回到桌面,回调:
    onPause -->onStop();
    如果透明:onStop()不再调用(启动一个透明主题的ActivityB,因为ActivityA还是可见的,但不在前台,)

    当再次回到ActivityA时,会回调 onRestart () -->onStart()--->onResume();
    5.back键:
    onPause -->onStop -->onDestory;

    6.当前Actiivty是A,如果用户打开一个新的ActivityB,那么B.onRsume() 和A.onPause()哪个先回调?
    这个问题,要从源码分析。暂不详细说了,总之,源码里有一段话“we need to start pasuing the curent activity ,so the top one can be resumed"
    即先A.onPause() ,然后B.onResume()

    相关文章

      网友评论

          本文标题:onStart()和onResume()/onPause()和o

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