暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

每日一学系列之service(二)绑定服务

程序员的日记本 2017-11-29
274



以上图片来自于百度图片


什么是绑定服务
1


绑定服务是客户端-服务器接口中的服务器。绑定服务可让组件(例如 Activity)绑定到服务、发送请求、接收响应,甚至执行进程间通信 (IPC)。 绑定服务通常只在为其他应用组件服务时处于活动状态,不会无限期在后台运行。


两种服务比较
2




认识bindService
3
//在这里主要说一说 ServiceConnection ; 它主要是用来监控与服务的连接;
//同时在系统在创建链接的时候,会回调onServiceConnected函数,传递与服务端
//通信的IBinder对象。
public boolean bindService(Intent service, ServiceConnection conn,        int flags)

复制


代码实战
4


1
创建service
public class BuilderService extends Service {
    @Override
    public IBinder onBind(Intent intent) {        
       return null;    }    
   public int getUserName() {      
        return "人人会编程";    } }

复制


2
创建binder
/* 由于需要使用IBinder进行数据传递,因此在系统创建前端和服务端连接的时候,
 * 会回调serviceConnection,将IBinder传递给前端
 * 也就是系统先调用onBind获取IBinder,再调用onServiceConnected,将IBinder
 * 传递给前端
 */  
 private final IBinder mBinder = new LocalBinder();
 public class LocalBinder extends Binder {
     BuilderService getService() {        
        return BuilderService.this;     } }
/***
多个Activity绑定,也只是第一个客户端调用的时候才会调用此函数
**/ @Override public IBinder onBind(Intent intent) {    
         return mBinder; }

复制


3
Activity绑定服务
bindService(intent, new ServiceConnection() {
    @Override
    public void onServiceConnected(ComponentName className, IBinder service) {
        BuilderService.LocalBinder binder = (BuilderService.LocalBinder) service;
        mService = binder.getService();
        mBound = true;
    }
    @Override
    public void onServiceDisconnected(ComponentName arg0) {
        mBound = false;
    }
}, Context.BIND_AUTO_CREATE);

//当Activity进入到onStop的时候,你应该释放资源
//调用unbindService释放你的服务。

复制
总结
5


其实在实际的项目中,更多的是使用启动服务。当然还有一种特定的服务就是在前台运行的服务,如:酷狗音乐播放器,一直有一个状态栏展示状态并提供用户与服务端进行通信的按钮;在后期讲述通知章节的时候实现此种功能。

关于绑定服务中的messenger方式进行数据传递,我们将会在讲述线程的时候进行说明。


下期提要
6


下期将主要讲介绍Android中的线程的知识。敬请期待!






长按,识别二维码,加关注,

可了解更多编程方面的知识,

让你看到每天一点点的进步。

谢谢点赞 + 分享!!!!!!



不积跬步,无以至千里;

不积小流,无以成江海。


文章转载自程序员的日记本,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论