2010-04-16 33 views
3

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

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

那么如何调用服务类的onStart()方法并开始我的操作。或者,当我还希望在活动和服务之间进行绑定时,如何在服务中启动我的操作的最佳方式。

回答

5

但据我所知,onBind不 电话onStartCommand(),并因此服务的 在onStart()永远不会 调用。

正确。

那么我怎么才能调用该服务类的调用onStart()方法 开始我 操作。

拨打startService()而不是bindService()。或者,请勿使用onStart()“启动[您的]操作”,并让绑定的客户端调用服务的公开API上的其他方法来执行此操作。

+0

后者是我现在所做的。这些操作现在由binder对象的方法启动。这是“好”的设计还是有更好的解决方案?无论如何,我们都需要 thx。 – Masala 2010-04-16 15:52:17

+0

这听起来很好。 – CommonsWare 2010-04-16 16:22:42

+0

取决于你想达到的目标。如果即使在后台也应该通过HTTP操作,使用绑定服务并不安全。当最后一个客户端解绑时,绑定服务将被销毁 - 如果在Activity放置在后台时不解除绑定服务,则会泄露上下文。 因此,如果您希望HTTP通话在电话中存活,那么您应该同时呼叫绑定并从您的活动开始。 – 2013-07-04 18:04:39

相关问题