12

将服务绑定到FragmentActivity

bindService(Intent, ServiceConnection, int);

Fragment

getActivity().bindService(Intent, ServiceConnection, int);

什么是更好的做法?

4

1 回答 1

39

将服务绑定到 FragmentActivity... 还是 Fragment 更好

它们和你在这里写的一样。getActivity()不是Fragment- 它是一个返回Activity. 您不能调用bindService().Fragment

什么是更好的做法?

两者都不。绑定到Application通过 获得的对象,getApplicationContext()ServiceConnection(或实际上)一个保留的管理Fragment

原因是配置更改。绑定是状态。您需要在配置更改时保持该状态。虽然保留的Fragment可以保留,但系统中的和注册它以进行绑定ServiceConnection的系统之间存在隐式联系。由于活动可以在配置更改时被销毁和重新创建,所以这里不是一个好的选择。,这是系统全局的,是一个更安全的选择,并且是少数几个选择另一个是明智之举的地方之一恕我直言。ServiceConnectionContextActivityContextApplicationApplicationContext

这是我的一篇博客文章,从片段之前的时间开始,更多地涉及到这一点。这是一个演示该技术的示例项目。

于 2013-03-05T23:07:33.207 回答