【问题标题】:Android - Start a new activity while the application is in the backgroundAndroid - 当应用程序在后台时启动一个新活动
【发布时间】:2013-01-10 09:31:36
【问题描述】:

我的应用程序的第一个活动是启动屏幕,其中显示一些动画,同时使用 AsyncTask 在后台线程中进行一些加载。 后台加载完成后,我想开始一个新活动。这样做的正确方法是什么?

  1. 直接从 AsyncTask 类的 onPostExecute 方法启动一个新活动。
  2. 在开始新活动之前检查当前活动是否显示:
    • 如果显示当前活动,则启动新活动。
    • 如果当前活动显示,请使用标志(布尔值)并在 onResume 方法期间检查标志,以便在那里开始新活动。李>

我主要关心的是:

如果我的应用程序进入后台(由于来电、home 键按下等)并且后台线程 (AsyncTask) 完成执行,并且从 onPostExecute 方法,而我的应用程序仍在后台:会发生什么?

  • 我的应用程序再次可见后,新活动是否会直接启动?

【问题讨论】:

    标签: android android-asynctask android-activity


    【解决方案1】:

    我遇到了类似的情况:我的应用程序进入后台,一段时间后应用程序启动了一个显示另一个活动的意图。但是,应用的行为现在取决于它运行的操作系统:

    • 在 4.4 之前的设备上应用会静默打开新 Activity 并保持在后台。当用户恢复应用程序时,系统会提示他进行第二个活动。

    • 在 4.4 设备上(在 4.4.2 和 4.4.4 上测试)应用打开第二个活动,但 3-4 秒后,应用弹出到前台,打断用户.

    希望它可以帮助任何人。我仍在寻找第二种情况的解决方案,以防止应用程序弹出到前台。

    【讨论】:

    • 感谢您对运行 android 4.4 的设备的回答,我不知道。也许您可以在开始新活动之前检查您的应用是否在前台?
    【解决方案2】:

    根据我的经验,我正在回答你的问题

    问题1

    如果您使用 AsyncTask,您必须在 OnPostExecute() 中开始新活动。根据我的经验,这是正确的做法。

    问题2

    当您按下主页键或接听电话时。您的活动将进入后台,直到您按后退按钮退出应用程序(那时您的应用程序已退出)。所以当你回到你的应用程序时,如果后台进程完成,你的新活动将是可见的。否则你会看到启动画面。

    【讨论】:

    • 感谢您的及时答复。我尝试在 onPostExecute 中启动新活动,它运行良好。然而,这不是我正在寻找的行为,但这是一个正确的答案。
    【解决方案3】:

    我认为它依赖于 android 的操作系统。它为每个组件定义了一些内置的优先级模型。

    看commonsware给出的答案。

    change process priority in android

    这给出了关于组件优先级的简要概念。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多