启动活动而不在前台显示它,但将其添加到后台堆栈

时间:2014-06-06 12:45:14

标签: android performance android-activity

是否可以在不将其显示在前景上但将其添加到后台堆栈的情况下启动活动。 由于我的应用程序太重而且需要时间,因此我想自动启动它并保留在后台堆栈中。这将定期(每2小时一次)完成,以便应用程序保持电池效率。 此过程的主要目标是缩短应用程序的启动时间。

我尝试了以下但不幸的是它对我没用:

  1. 获取当前前台活动
  2. 启动我的应用
  3. 再次开始上一个活动。
  4. 我想知道这种情况有没有解决办法。

    顺便说一下,我的应用程序没有定期执行任何任务。但我有一个单独的服务,无需用户交互即可启动活动并将其保留在后台堆栈中。但在用户点击应用图标之前,我不想显示此活动。

2 个答案:

答案 0 :(得分:2)

我不认为你想要一个在后台运行的定期任务的Activity,你想要一个服务。它们主要用于在没有UI的情况下在后台运行任务,然后发送广播以通知结果。最常用的服务类型是IntentService,因为它有自己的线程(而不是在UI线程上运行)。这是一篇关于它的文章。

http://www.vogella.com/tutorials/AndroidServices/article.html

然而,可以使用'无头碎片'来对活动进行后台操作。同样,根据文档:http://developer.android.com/guide/components/fragments.html#Adding

(更重要的是,这里:http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android-apps/4.1.1_r1/com/example/android/apis/app/FragmentRetainInstance.java

但我认为您当前的用例需要服务。

答案 1 :(得分:1)

据我所知,您需要在服务器上显示一些来自Activity的数据,这可能会从服务器获取数据非常耗时。如果您在应用程序启动后开始获取数据,您将最终显示进度对话框很长一段时间,即直到您从服务器获取数据。我知道这是你关注的问题。

你说你已经有一些服务正在开始你的活动。如果是这种情况,我认为你必须稍微改变你的应用程序的设计。

让服务在那里,让它从后台服务器获取数据,让它现在启动不可见的Activity。现在,当用户单击应用程序图标时,这将启动“活动”并显示服务从服务器收集的数据。

大多数时候,当用户启动应用程序时,您将获得数据..在某些情况下,您可能需要等到服务完成,我想即使您必须等待等待时间也不会太多这里。

服务启动活动并且不可见..看起来不干净。