【问题标题】:How to know activity has been finished?如何知道活动已经结束?
【发布时间】:2012-01-06 11:11:03
【问题描述】:

我想查看某个活动是否正在运行或已完成。有什么方法可以查看活动状态吗?

我找到了activity.isFinishing(),但我不确定。

【问题讨论】:

  • 你能准确地说出你想在你的项目中做什么,这样我就可以得到一些明确的想法来解决你的问题..
  • 跑步可以采取一切形式,所以我最好知道你在这里的目的。
  • 有时我们会收到窗口令牌错误,因为活动完成并且对话框仍然被调用,所以在调用对话框之前我想检查活动是否正在运行。
  • @ConnectinglifewithAndroid 你是怎么解决这个问题的?
  • 使用 activity.isFinishing() 是正确的解决方案。如果活动完成,则返回 true,因此在创建对话框检查条件之前。如果为 true,则创建并显示对话框。

标签: java android android-intent android-activity


【解决方案1】:

如果您想在Activity 变得不可见之前执行任何步骤。

这里有几个选择。

onDestroy() - 用于最终清理。

isFinishing() - 在act.finish() 被调用之后它会返回true。

onStop() - 当Activity 被框架进程杀死时。 (未销毁)

onPause() - 当Activity 被任何其他Activity 覆盖时

onBackPressed() - 捕获用户触发硬件返回键的事件。

【讨论】:

  • 还有isDestoyed()(API 17中添加)developer.android.com/reference/android/app/…
  • 是的,它是后来发布的,所以这就是为什么它没有包含在答案中。感谢提及。
  • 我认为'killed'这个表达会引起一些混乱。例如,onStop() 在另一个应用程序进入前台时被调用。但是 Activity 的状态保持不变,所以它没有被杀死 :)
【解决方案2】:

在Activity被销毁之前在onPause方法中调用isFinishing:

@Override
protected void onPause() {
    super.onPause();
    if (isFinishing()) {
        // Here  you can be sure the Activity will be destroyed eventually
    }
}

【讨论】:

    猜你喜欢
    • 2012-03-17
    • 2020-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-30
    • 1970-01-01
    相关资源
    最近更新 更多