【问题标题】:Android Service onBind -> onStartAndroid 服务 onBind -> onStart
【发布时间】:2010-04-16 09:11:45
【问题描述】:

我有一个关于 Android 服务的理解问题。我有一个执行后台 http 操作的服务和一个应该显示这些 http 操作的当前状态的活动。

所以我实现了Binder接口等等。我可以调用 bindService 方法,并且我的 ServiceConnnection 的 onServiceConnected 被调用。但据我所知,onBind 不会调用 onStartCommand() 等服务的 onStart() 永远不会被调用。

那么如何调用服务类的 onStart() 方法并开始我的操作。或者,当我还想要 Activity 和 Service 之间的绑定时,如何在服务中启动操作的最佳方式是什么。

【问题讨论】:

    标签: android binding service


    【解决方案1】:

    但据我所知,onBind 没有 调用 onStartCommand() 等等 服务的 onStart() 永远不会 调用。

    正确。

    那么如何调用 onStart() 方法 服务类并开始我的 操作。

    请致电 startService() 而不是 bindService()。或者,不要使用 onStart() 来“开始 [您的] 操作”,并让绑定的客户端调用服务公开 API 上的其他方法来完成这项工作。

    【讨论】:

    • 后一个是我现在做的。这些操作现在由活页夹对象的方法开始。那是“好”的设计还是有更好的解决方案?无论如何谢谢。
    • 取决于您想要实现的目标。如果 HTTP 操作即使在后台也应该通过,那么使用绑定服务是不安全的。当最后一个客户端取消绑定时,绑定的服务将被销毁 - 如果您在将 Activity 置于后台时不取消绑定服务,则会泄漏上下文。因此,如果您希望 HTTP 调用在电话通话中继续存在,那么您应该调用 bind 并从您的 Activity 开始。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-05
    • 1970-01-01
    • 1970-01-01
    • 2016-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多