开发者社区> 问答> 正文

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
 

展开
收起
爵霸 2016-06-02 09:10:29 2405 0
1 条回答
写回答
取消 提交回答
  • startService启动的服务是服务进程,开启service后就和开启它的activity没有关系了

    bindService启动的服务会随着开启它的activity销毁而销毁,bindService的主要目的是为了和service通信

    多加一个startService是为了防止随activity销毁而销毁service

    2019-07-17 19:23:55
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
58同城Android客户端Walle框架演进与实践之路 立即下载
Android组件化实现 立即下载
蚂蚁聚宝Android秒级编译——Freeline 立即下载