回答

38

是更好地绑定服务FragmentActivity ...或分片

他们是一样的,你有他们在这里写的。 getActivity()不是Fragment - 它是一种返回Activity的方法。 Fragment上不能拨打bindService()

什么是更好的做法?

都没有。绑定到Application对象,通过getApplicationContext()获得,ServiceConnection(或者实际上)保留Fragment

原因是配置更改。绑定是状态。您需要通过配置更改来维护该状态。虽然保留的Fragment可以保留在ServiceConnection上,但系统之间的隐式绑定在ServiceConnectionContext之间,它们将其注册为绑定。由于活动可以在配置更改时被破坏和重新创建,因此Activity在这里不是Context的好选择。 Application,这是全球系统,是一个更安全的选择,并选择Application在另一个Context少数几个地方之一是一个明智的举动恕我直言。

Here is a blog post我的,从片段前的时间,进入这一点多一点。 Here is a sample project演示技术。

+0

请你分享一下你的意见:http://stackoverflow.com/questions/24309379/bind-service-to-activity-or-fragment – Anjani 2014-06-19 14:44:54

+0

看着你的演示,看起来你正在泄漏内存。您在保留的Fragment中保留对UI元素的引用,因此即使配置可能已更改,仍旧会引用旧的Context。我会保持UI元素在一个单独的片段。 – mkuech 2015-03-02 16:42:40

+0

@mkuech:该UI元素在'onCreateView()'中设置为一个新值。因此,在配置更改之后,该片段不再保留在旧小部件中。 – CommonsWare 2015-03-02 16:44:41

相关问题