activity生命周期分析(两个activity之间跳转的生命周期执行顺序)

时间:2023-11-24 12:37:32

NoteMainActivity点击跳转至NoteListActivity


我们都了解:
当A界面点击进入B界面时,此时
        A===onPause--->onStop
        B===onStart--->onResume
B界面退出,A界面显示,此时 
        B===onPause--->onStop
        A===onRestart--->onStart--->onResume

问:但是,是执行A的生命周期执行完再执行B的生命周期吗?或者B的执行完再执行A的吗?
答:不。   实际是
当A界面点击进入B界面时,此时       
        onPause(A)--->onStart(B)--->onResume(B)--->onStop(A)
B界面退出,A界面显示,此时        
        onPause(B)---> onRestart(A)---> onStart(A)--->onResume(A)--->onStop(B) 

问:有什么实际应用呢?
答:举个例子。A界面需要从数据库请求数据,展示在界面上。B界面的操作会影响A界面的数据。从B界面返回到A界面需要重新请求数据,进行界面展示。
    此时,B界面应该在哪里进行数据的提交。A界面在哪里进行数据的读取。
    在B界面的onPause进行数据的存储。
    在A界面的onRestart进行数据的读取渲染

下面是我实际打印的log。
NoteMainActivity进入
activity生命周期分析(两个activity之间跳转的生命周期执行顺序)
NoteMainActivity屏暗
activity生命周期分析(两个activity之间跳转的生命周期执行顺序)
NoteMainActivity屏亮:
activity生命周期分析(两个activity之间跳转的生命周期执行顺序)

NoteMainActivity------>NoteListActivity(点击跳转)
activity生命周期分析(两个activity之间跳转的生命周期执行顺序)

退出NoteListActivity,显示NoteMainActivity

activity生命周期分析(两个activity之间跳转的生命周期执行顺序)

退出NoteMainActivity
activity生命周期分析(两个activity之间跳转的生命周期执行顺序)

附一张avtivity的生命周期图:

activity生命周期分析(两个activity之间跳转的生命周期执行顺序)