【问题标题】:When is an activity paused without soon after being stopped?一个活动什么时候在停止后不久就暂停了?
【发布时间】:2013-09-30 02:58:09
【问题描述】:

所以我正在尝试了解 Android 的 Activity 生命周期。我不太明白的一件事是何时可以暂停活动而不会很快停止。我能找到的文档是这样说的

这个方法[onPause]在系统即将放activity时调用 进入背景或活动部分被遮挡时。

一个活动究竟什么时候会被部分遮挡?

【问题讨论】:

  • 当您对活动进行对话时。您的活动仍将部分可见,但将处于暂停状态。因为用户可以单击对话中的按钮(如果有)并可以移动到下一个活动或取消对话以再次显示部分可见的活动
  • 当一个activity失去焦点时,andoird系统会调用onPause()方法。暂停是运行另一项活动之前的准备阶段。这是应保留活动的现有状态的地方。

标签: android android-activity


【解决方案1】:

当 Activity 仍在 FG 中可见且正在运行但被遮挡时调用 OnPause,例如当您启动 Dialog 时,Activity 仍在 FG 中运行且可见但被 Dialog 遮挡,这就是 OnPause。

onStop 是当我们完全处于 BG 中时,例如转向新活动左右,它仍然处于活动状态并正在运行,但不可触摸且不可见。

简而言之

【讨论】:

  • 当你刚刚开始一个对话时,不会调用 on pause。但是,当您启动一个样式为 @style/Theme.AppCompat.Dialog 或其他类型的 Activity 时,会调用 onPause 而不会调用 onStop。
【解决方案2】:

一个活动究竟什么时候会被部分遮挡?

如果Dialog 主题Activity 出现在前面,则可能会发生这种情况。具有透明背景的活动也会在Activity 中引起这个或Dialogs。基本上,当Activity 出现在顶部时,它并不是完全不透明且全屏显示。

【讨论】:

    【解决方案3】:

    该语句表示当您的 activity 在屏幕上不再可见或被另一个 Activity 接管时。

    例如:

    您已经编写了一个计算器应用程序。它有两个活动,一个用于计算和获取用户输入,另一个用于设置 i-e;设置类型的计算器,例如。科学、正常等

    考虑在屏幕上显示计算器的那一刻,当您进入计算器应用程序的设置时,user input activity is in backgroud (off the screen) and settings activity has taken over the screen (came to foreground), At this moment, user input activity is in Pause state.

    【讨论】:

    • “当您的活动不再显示在屏幕上或被另一个活动接管时。”这似乎是当一个活动在后台运行并且在 onPause 之后不久调用 onStop
    • @Earlz 根据文档,它可能会或可能不会被调用。由操作系统决定何时调用它。根据我的经验,当系统资源不足时,操作系统会为处于 onPause() 状态的活动调用 onStop() ,这样当操作系统需要资源时,它们更接近于被销毁。希望这会有所帮助。
    猜你喜欢
    • 2016-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-18
    • 2018-02-17
    • 2013-12-31
    • 1970-01-01
    相关资源
    最近更新 更多