Android - 在应用程序处于后台时启动新活动

时间:2013-01-10 09:31:37

标签: android android-asynctask android-activity

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

  1. 直接从 AsyncTask 类的 onPostExecute 方法开始新活动。
  2. 在开始新活动之前,检查当前活动是否显示:
    • 如果显示当前活动,请启动新活动。
    • 如果显示当前活动 NOT ,请使用标志(布尔值)并在 onResume 方法中检查该标志,以便在那里启动新活动。
  3. 我主要担心的是:

    如果我的应用程序转到后台(由于来电,主页按键,...)和后台线程(AsyncTask)已完成执行,则从 onPostExecute <启动新活动/ strong>方法,而我的应用程序仍然在后台:会发生什么?

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

3 个答案:

答案 0 :(得分:2)

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

    预备4.4设备上的
  • 该应用程序会以静默方式打开新活动并保留在后台。当用户恢复应用程序时,系统会提示他第二个活动。

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

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

答案 1 :(得分:1)

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

<强>问题1

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

<强>问题2

当您按住主页键或接听电话时。您的活动将进入后台,直到您通过按后退按钮退出应用程序(此时您的应用程序退出)。因此,当您返回应用程序时,如果后台处理完成,您的新活动将会显示。否则,您将看到启动闪屏。

答案 2 :(得分:0)

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

看看commonsware给出的答案。

change process priority in android

这简要介绍了组件的优先级。