2011-03-09 110 views
2

我需要在Android中同步获取服务。我确定它已经在运行,我只需要在我的适配器中访问它。一旦服务可用,我应该只通过一个参考,还是我可以用context.getService(...)来得到它?什么是推荐的解决方案?有没有办法在Android中同步获取服务?

回答

2

我相信你有一个适配器创建和销毁的活动。因此,适配器的生命周期应该与您的活动的生命周期相匹配。结论是将服务的引用传递给创建的适配器,因为它是绑定和解除绑定服务的活动。 :-)

0

你感兴趣的是制定绑定服务的概念。看看本地服务示例例如Service SDK页面上:

http://developer.android.com/reference/android/app/Service.html

此示例演示如何绑定到创建这样你可以得到一个常设参考,并使得它直接调用服务当你受束缚时。当您以这种方式绑定/解除绑定到服务时,您也不必担心明确地调用开始和停止。只要至少有一个组件绑定到该服务,该服务就会运行。

希望有帮助!

+2

但绑定到服务是异步的,所以这不是一个同步解决方案。 – Leo 2011-03-09 21:15:42

+0

确实如此,但Binder界面是以请求的方式直接访问服务对象的唯一途径。在需要服务时不会执行绑定操作,而是以遵循活动或其他系统组件的生命周期的方式进行绑定操作。可能需要更多关于该问题的信息来提出更好的解决方案。 – Devunwired 2011-03-09 21:25:18

+0

@Devunwired根据你需要访问服务的时间/地点,这可能只是一个设计缺点。我真的想要访问Activity.onResume()中的服务。然而,我已经尝试在Application.onCreate()和Activity.onCreate()中调用bindService(),但Activity.onResume()运行时不会调用ServiceConnection.onServiceConnected()。看起来,生命周期事件以ServiceConnection.onServiceConnected()不会运行的方式紧接着排队,直到Activity已经运行。如果你有任何想法,我想听听他们。 – spaaarky21 2013-12-01 08:37:37

相关问题