V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
narutow
V2EX  ›  Android

Activity 为什么要有 onStart 生命周期? 直接用 onResume 不行吗?

  •  
  •   narutow · 9 天前 · 1394 次点击

    两个 Activity 切换时, 它们的生命周期顺序是

    ... A#onPause B#onCreate B#onStart B#onResume A#onStop ...

    这样安排顺序我能理解, 在 A 显示的时候让 B 显示, B 完全展示后, A 走 onStop, 这样用户界面不会黑屏.

    但有个疑问, B Activity 展示的回调中为什么要多一个 onStart, 直接通知正在展示的 Activity onRESUME 不行吗

    8 条回复    2021-01-15 14:13:56 +08:00
    also24
        1
    also24   9 天前
    我觉得谷歌是希望能严格区分 onPause() 和 onStop() 的。

    所以对应着搞了 onResume() 和 onStart() 作为对应的恢复状态。


    实际上 Google 确实专门讲了 onPause() 和 onStop() 的差异:
    https://developer.android.com/guide/components/activities/activity-lifecycle
    janus77
        2
    janus77   9 天前 via iPhone
    onresume 是 ui 渲染了,有些特殊的需求是希望在渲染之前执行,或者在进入后台(不渲染)的时候扔会执行。所以就需要 onstart 和 onstop
    RikkaW
        3
    RikkaW   9 天前   ❤️ 5
    分屏、画中画等等屏幕上不止一个 Activity (窗口)的情况下就是只有处于焦点的那个是 resumed 状态,其他的都是 started 状态。
    zagfai
        4
    zagfai   9 天前   ❤️ 1
    Android 给开发者制定的架构就是一坨翔
    rosu
        5
    rosu   9 天前 via Android
    start 是可见,resume 是焦点。
    narutow
        6
    narutow   8 天前
    @RikkaW 感谢, 理解了, onStart 和 onRESUME 就是界面可见 和 获得焦点可以同用户交互 的两个回调. 其他比如多窗口可以看到, 但不能交互的情况, Activity 就处于 onPause
    kraits
        7
    kraits   8 天前 via Android   ❤️ 1
    楼主有没有考虑到 Activity 横竖屏切换的生命周期:

    onSaveInstanceState()→onPause()→onStop()→onDestroy()→onCreate()→onStart()→onRestoreInstanceState()→onResume()
    fromzero
        8
    fromzero   1 天前
    onStart onRestart 都是满有用的。
    关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1365 人在线   最高记录 5298   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 18:27 · PVG 02:27 · LAX 10:27 · JFK 13:27
    ♥ Do have faith in what you're doing.