Android中先开启本地的Service,再绑定它,把它当做远端Service处理,有什么意义或者好处?
下面是OSChina Android客户端的源码中的一个片段,采用的就是我标题中所说的,先开启NoticeService,后绑定,为什么要这样做,好处是什么呢?为什么不直接绑定本地Service实现通信呢? 我从书上看到的是,远端Service的意义在于共享Service(即两个不同的应用程序间,共享其中一个应用程序的Service)。
public static boolean bindToService(Context context, ServiceConnection callback) { //直接开启本地NoticeService服务,(注:startService方式并不能进行进行通信) context.startService(new Intent(context, NoticeService.class)); //绑定远程NoticeService 服务, //csp:为什么同一个服务要用两种不同的方式开启(准确的说,先启动,后绑定)? //answer: 可能是先开启本地服务,然后把绑定本地服务当做远程服务来处理,目的可能是为了创造不同的进程,提高效率? ServiceBinder sb = new ServiceBinder(callback); sConnectionMap.put(context, sb); return context.bindService( (new Intent()).setClass(context, NoticeService.class), sb, 0); } //最后,总之开启了服务NoticeService
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
原来是这样!谢谢啦!
startService启动的服务是服务进程,开启service后就和开启它的activity没有关系了
bindService启动的服务会随着开启它的activity销毁而销毁,bindService的主要目的是为了和service通信
多加一个startService是为了防止随activity销毁而销毁service