【问题标题】:Bind to service from android activity从 android 活动绑定到服务
【发布时间】:2012-03-13 00:28:13
【问题描述】:

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

关闭活动屏幕会导致活动实际停止吗?还是我需要强行停止它才能让它停止?

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

【问题讨论】:

    标签: android service


    【解决方案1】:

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

    您可以像第一次那样重新绑定到正在运行的Service。发送一个 Intent 来启动一个已经在运行的 Service 不会创建它的第二个实例,所以这是安全的。

    像您所描述的那样启动Service 的一个好方法是在您对bindService() 的调用中使用Context.BIND_AUTO_CREATE 参数来启动它。

    所有这些的详细信息都可以在Android docs about bound services 找到。一开始可能会有点混乱。密切关注教程代码,因为听起来您的问题很好地映射到了他们提供的示例。

    【讨论】:

    • 是的,我认为你回答得很好。谢谢。我一直在阅读这些文档,但这是一个很好的说明。作为快速跟进(也许我应该提出另一个问题)。在我绑定到服务后,我似乎不需要启动它(它的 onCreate 方法会自动调用)。对吗?
    • 没错。 Context.BIND_AUTO_CREATE 参数确保它在尚未启动时启动。实际上,您无法绑定到未启动的服务,因此该服务在绑定发生之前就已启动。
    猜你喜欢
    • 2010-12-27
    • 1970-01-01
    • 1970-01-01
    • 2012-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多