绑定到Android中的服务

时间:2011-02-06 20:07:22

标签: android service

我对Android中的服务有疑问。我想知道为什么绑定服务并建立连接是必要的?我正在使用一个实现GPS模块的服务进行地理定位的应用程序。为了获取位置,我在类静态和公共方法静态中创建一个变量,从类外部调用,就是这样。 要从我在课堂上使用的GPS中检索位置:

Location mLocation = ServiceGPS.getLocation();

ServiceGPS类具有以下方法:

public static Location getLocation(){
    return mLocation;
}

然后,为什么我需要使用绑定服务? 非常感谢您的帮助,并与我分享您的知识。

BR。 大卫。

1 个答案:

答案 0 :(得分:2)

  

我想知道为什么必须绑定服务并与之建立连接?

这不是“必要的”。这并不意味着任意选择是个好主意。

例如,如果您的所有服务都是Location,那么您应该从项目中删除该服务,并直接使用LocationManager,因为不清楚您的服务添加了什么价值。不要仅仅因为情绪打击你而创建服务 - 有一个非常清楚地了解服务提供什么功能以及为什么它应该是服务,而不仅仅是某个活动的方法。

对于做真实事务的真实服务,服务代码必须运行 - 服务通常没有静态数据成员或方法,尽管可以。要使服务运行,必须调用startService()bindService()。否则,永远不会调用服务的onCreate()和亲属,就像onCreate()一样,如果活动未启动,则永远不会调用活动的亲属。

是否使用startService()(以及后来的stopService()stopSelf())或bindService()(以及后来的unbindService())的选择取决于服务在做什么,应该做多久,等等。