2

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

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

我主要关心的是:

如果我的应用程序进入后台(由于来电、按下 home 键,...)并且后台线程 (AsyncTask) 完成执行,并且在我的应用程序仍在运行时从onPostExecute方法启动一个新活动背景:会发生什么?

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

3 回答 3

2

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

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

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

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

于 2014-09-18T10:58:25.000 回答
1

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

问题1

如果您使用 AsyncTask,您必须在OnPostExecute(). 以我的经验,这是正确的做法。

问题2

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

于 2013-01-10T09:47:00.740 回答
0

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

看看commonsware给出的答案。

在android中更改进程优先级

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

于 2013-01-10T10:17:59.907 回答