调用startService的Context

时间:2016-10-13 14:42:10

标签: android android-context

我在Activity中使用了getApplication()。bindService()或者只是bindService()。 是一个优于另一个。考虑到Activity具有生命周期,在什么情况下将使用Application上下文来启动/绑定到服务。

1 个答案:

答案 0 :(得分:5)

对于绑定来自活动的服务,请使用Application上下文(getApplication())。这是因为绑定本身表示需要作为配置改变处理的一部分处理的状态(例如,通过onRetainNonConfigurationInstance())。一个活动实例可能会绑定,但是在配置更改之后,您可能不会取消绑定。使用Activity作为Context bindService()可能会引入内存泄漏(新活动会将间接引用保留回绑定到服务的原始活动)

但是,从活动开始服务不涉及活动中的框架强制状态。因此,在活动本身上使用startService()启动服务应该没问题。