2012-03-13 73 views
2

我有一个启动服务的活动。当活动关闭时,我希望服务在后台继续运行。我在这里有几个问题。从android活动绑定到服务

关闭活动画面会导致活动实际停止吗?或者我需要强行阻止它使其停止?

如果关闭屏幕确实会导致它停止,那么我假设我需要使用startService来启动它。那是对的吗?如果是这种情况,下次活动开始时是否有办法处理正在运行的服务?如果不是这种情况,那么我可以绑定到服务。

回答

3

当您的Activity不再显示在屏幕上时,它会停止。停止绑定到ServiceActivity不会停止Service。但是,当Activity调用onDestroy()以确保您没有任何悬挂处理程序等时,您需要确保从Service解除绑定。

您可以按照与第一次相同的方式重新绑定到正在运行的Service。发送Intent以启动已运行的Service不会创建它的第二个实例,因此这很安全。

开始Service的一个好方法就是使用Context.BIND_AUTO_CREATE参数来启动bindService()

所有这些的细节可以在Android docs about bound services找到。起初可能有点混乱。紧跟教程代码,因为它听起来像你的问题映射到他们提供的样本。

+0

是的,我认为你完美地回答了这个问题。谢谢。我一直在阅读这些文档,但这是很好的说明。作为一个快速跟进(也许我应该打开另一个问题)。在绑定到服务之后,它看起来并不需要启动它(它的onCreate方法会自动调用)。那是对的吗? – 2012-03-13 00:45:46

+0

这是正确的。 'Context.BIND_AUTO_CREATE'参数确保它在尚未开始时启动。事实上,您无法绑定到未启动的服务,因此服务在绑定发生之前就已启动。 – Argyle 2012-03-13 00:48:18