我可以为特定任务创建活动而不将该任务放到前台吗?

时间:2010-03-17 15:54:08

标签: android

这是我的用例:
该应用程序从登录屏幕开始。输入凭据并点击“登录”按钮。然后会出现一个进度对话框,等待下载一些内容。下载完东西后,您将进入新活动。您采取的具体活动取决于服务器响应。

这是我的问题:
如果您在此登录/下载过程中回家,在不久的将来某个时候您的下载将完成并将调用startActivity()那么新活动将被推到前台,粗暴地打断用户。我开始下载之前无法启动活动,因为正如我之前提到的,我开始的活动取决于下载的结果。

我显然不想像这样打断用户。解决此问题的一种方法是在用户返回应用程序之前不要调用startActivity()。我可以通过跟踪LoginActivity的onStop()onRestart()来实现此目的。 但是我想知道,有什么方法可以在后台创建活动吗?这样用户就可以返回应用程序并准备好了...否则他将不得不等待创建新活动(可能需要一些时间,因为活动 还必须下载并显示一些数据)。

更新 你猜怎么着?我撒了谎!我本可以发誓,开始这项活动导致它出现在前台,但我又回去测试它,问题神奇地消失了。我在1.6和2.0.1中进行了测试,两个操作系统都非常聪明,不会将后台任务带到前面。

2 个答案:

答案 0 :(得分:2)

我怀疑你是在Service进行下载的。如果是这样,Service应在完成时创建Notification,用户可以自行激活。 PendingIntent将保留准确的Activity

当然,当Activity仍然有效时,不应发布Notification,因此当Service处于有效状态时({1}},您应该提及Activity {1}}),如果没有(在onResume()中),如果它处于活动状态,该服务可以让您的活动开始正确的活动。

答案 1 :(得分:0)

我会考虑将数据的下载与活动分开,而不是Service。这样,所有数据都可以在后台下载,而不管Activity应该(或正在)显示。

然后,当用户返回应用程序时,应用程序可以根据是否已下载正确的数据来选择(onResume)要显示的Activity

如果完成数据下载对于Notification来说不够重要,那么这将是更可取的。