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

Android-在应用程序处于后台时启动新活动,android,android-asynctask,android-activity,Android,Android Asynctask,Android Activity,我的应用程序的第一个活动是启动屏幕,其中显示一些动画,同时使用AsyncTask在后台线程中进行一些加载。 在后台加载完成后,我想开始一个新的活动。正确的方法是什么 直接从AsyncTask类的onPostExecute方法启动新活动 在开始新活动之前,检查是否显示当前活动: 如果显示当前活动,则启动新活动 如果当前活动为非显示,则使用标志(布尔值)并在onResume方法期间检查标志,以便在那里启动新活动 我主要关注的是: 如果我的应用程序转到后台(由于来电、按home键等),后台线程(A

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

  • 直接从AsyncTask类的onPostExecute方法启动新活动
  • 在开始新活动之前,检查是否显示当前活动:
    • 如果显示当前活动,则启动新活动
    • 如果当前活动为显示,则使用标志(布尔值)并在onResume方法期间检查标志,以便在那里启动新活动
  • 我主要关注的是: 如果我的应用程序转到后台(由于来电、按home键等),后台线程(AsyncTask)执行完毕,并且当我的应用程序仍在后台时,从onPostExecute方法启动了一个新活动:会发生什么

    • 当我的应用程序再次可见时,新活动是否会立即开始

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

      问题1

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

      问题2


      当您按home键或接听电话时。您的活动将进入后台,直到您按“后退”按钮退出应用程序(此时您的应用程序已退出)。所以,当你们回到你们的应用程序时,若后台进程完成,你们的新活动将可见。否则您将看到启动屏幕。

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

      看看Commonware给出的答案


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

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

      • 在4.4之前版本的设备上应用程序将以静默方式打开新活动并保持在后台。当用户恢复应用程序时,系统会提示他已经执行了第二个活动

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


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

      谢谢你的及时答复。我尝试在onPostExecute中启动新的活动,效果非常好。然而,这不是我想要的行为,尽管如此,这是一个正确的答案。谢谢你关于运行安卓4.4的设备的回答,我不知道。在开始新活动之前,您可以检查您的应用程序是否在前台?