Android 此演示如何使用Onstop方法?

Android 此演示如何使用Onstop方法?,android,android-activity,android-lifecycle,Android,Android Activity,Android Lifecycle,我正在做一个演示,以了解后台堆栈和活动生命周期 我提出: 主要活动 MainActivityDialog(另一个活动主题为dialog) 活力 我启动了这个应用程序,主要活动如下所示。然后按按钮显示对话框,然后打开MainActivityDialog。然后我再次按下MainActivityDialog上的按钮,活动就打开了。最后,我按下了后退按钮 MainActivity -> MainActivityDialog -> BActivity ---Back---> Mai

我正在做一个演示,以了解后台堆栈和活动生命周期

我提出:

  • 主要活动
  • MainActivityDialog(另一个活动主题为dialog)
  • 活力
我启动了这个应用程序,主要活动如下所示。然后按按钮显示对话框,然后打开MainActivityDialog。然后我再次按下MainActivityDialog上的按钮,活动就打开了。最后,我按下了后退按钮

MainActivity -> MainActivityDialog -> BActivity ---Back--->  MainActivityDialog
以下是此应用程序的日志:

我的问题是:

  • 为什么从MainActivityDialog启动BActivity后MainActivity会停止?那么在调用BActivity lifecycle方法之后,为什么MainActivityDialog会停止

  • 按下BActivity中的后退按钮后,MainActivity首先启动,然后MainActivityDialog启动,然后MainActivityDialog恢复


  • 我不是安卓的专家,但既然还没有人回答,我会尽我最大的努力。我想提供帮助,因为我也第一次像你一样学习android(使用log cat查看activiti的当前状态)

    为什么从启动BActivity后MainActivity停止 维护活动对话框

    每次启动新活动时,旧活动将始终暂停/停止

    那么在BActivity生命周期方法被调用之后,为什么 MainActivityDialog是否停止

    因为现在当前活动是
    BActivity
    ,换句话说:
    MainActivityDialog
    不是活动/可见的,因此其已停止/暂停

    按下BActivity中的后退按钮后,MainActivity首先开始 然后MainActivityDialog启动,然后MainActivityDialog恢复

    是的,因为您从
    MainActivity
    启动了
    MainActivityDialog
    ,所以将首先重新启动
    MainActivity


    请随意评论,我还在学习:)

    对多个活动调用
    onStop()
    onDestroy()
    的顺序是不确定的

    如果您的活动堆栈中有多个活动在屏幕上不再可见,Android可能会在任何时候以任何顺序调用
    onStop()
    。这只是对活动的一个指示,即用户不再可以看到该活动。您不能依赖于对多个活动的
    onStop()
    调用的顺序

    这同样适用于
    ondestory()
    。一旦某个活动完成,Android可能会对该活动调用
    onDestroy()
    。如果您的任务中有多个已完成的活动,Android可以在任何时候以任何顺序调用它们。这也是不确定的。调用
    onDestroy()
    只是通知活动它不再处于活动状态,并且应该释放它可能拥有的任何资源

    不能保证
    onStop()
    onDestroy()
    会被调用。保证的最后一个生命周期调用是
    onPause()
    。在那之后,Android可以直接终止进程,而不调用任何进一步的生命周期方法


    在第二个问题中,您想知道为什么在用户按下
    BActivity
    上的后退按钮后,
    MainActivity
    首先启动,然后启动
    MainActivityDialog
    。原因是
    MainActivity
    首先在屏幕上可见,然后
    MainActivityDialog
    MainActivity
    上方的屏幕上可见(因为
    MainActivityDialog
    是以对话框为主题的,它不会覆盖整个屏幕,您可以看到
    MainActivity
    的部分内容).

    我的问题是,当我们去BActivity时,为什么桌面上的mainActivity比mainActivityDialog先调用?对不起,我不知道这个。也许这就是“对话”的工作原理。我的意思是,“dialog”(启动它的活动)的父级总是首先停止。