活动之间的沟通:意图或服务:什么更快?

时间:2010-05-03 13:11:35

标签: android

通过服务或使用意图发送数据所需的时间是否存在显着差异?

是否有使用服务以及何时使用意图的一般建议?

4 个答案:

答案 0 :(得分:4)

这是两件完全不同的事情。问题不是哪个更快,而是你想要做的事情。

如果要将数据从一个活动传输到另一个活动,请将其传递给意图。如果这对您来说还不够(例如数据太多),您可以采取其他方法,但不会涉及服务。例如,你可能有一个单独存放你的共享数据,这两个活动都可以访问...但是要非常小心你的进程在各个点被杀死导致单例消失(并且使用服务不会让你没有处理这种情况就逃之夭夭。)

即使用户没有直接与应用程序交互,服务也是在后台进行一些工作。特别是如果我们在一个.apk(通常是一个进程)中讨论内容,那么使用服务的其他原因很少。

答案 1 :(得分:2)

这取决于你需要什么。

如果可以,意图是最好的。您将能够将基元从一个活动发送到另一个活动,并使用startActivityForResult(),您将获得一个回到调用者活动的意图。

服务是在后台进行数据处理,可能会占用大量CPU /内存。使用服务,您必须在Activity和Service之间创建一个接口,这样您就可以直接从Activity调用Service的基本方法,您可以从Activity中控制服务。

这真的不是同一个目的。阅读documentation about Intents以及您可以捆绑的信息,这可能就是您所需要的。

答案 2 :(得分:0)

许多在活动之间传递数据的方法。有关选择方式的提示,请参阅here

答案 3 :(得分:0)

如果要将当前活动中的数据传递给新活动,最好将Bundle与Intent一起传递。它用于传递“获取的”用户数据。

服务在后台运行,而另一项活动仍在前台。 “背景”并不意味着它不显示 - 大多数服务都有某种形式的图形可视化 - 这意味着它不是活动堆栈的一部分。例如,您的活动可能正在发送短信,而您的服务可能是软键盘。服务可以与活动进行通信 - 在这种情况下,键盘当然需要将字符发送到文本消息“活动” - 但它通常涉及使用相当复杂的界面。它用于收集“实时”用户数据并将其传递给活动。