将服务绑定到FragmentActivity或Fragment?

paw*_*gio 10 service android android-fragments android-fragmentactivity

绑定服务是否更好FragmentActivity:

bindService(Intent, ServiceConnection, int);
Run Code Online (Sandbox Code Playgroud)

或者Fragment:

getActivity().bindService(Intent, ServiceConnection, int);
Run Code Online (Sandbox Code Playgroud)

什么是更好的做法?

Com*_*are 38

将服务绑定到FragmentActivity ...或Fragment是否更好?

它们和你在这里写的一样.getActivity()不是Fragment- 它是一个返回的方法Activity.你不能打电话bindService()Fragment.

什么是更好的做法?

都不是.绑定到Application对象,通过获得getApplicationContext()ServiceConnection由(或者实际上设法)一个保留Fragment.

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

这是我的博客文章,从碎片之前的时间开始,进入这一点.这是一个展示该技术的示例项目.