读书人

Android入门:绑定当地服务

发布时间: 2012-08-17 02:08:34 作者: rapoo

Android入门:绑定本地服务


一、绑定服务介绍
前面文章中讲过一般的通过startService开启的服务,当访问者关闭时,服务仍然存在;但是如果存在这样一种情况:访问者需要与服务进行通信,则我们需要将访问者与服务进行绑定;
如果使用Context.bindService()方法启动服务,则在服务未创建时,系统会调用服务的onCreate()方法,接着调用onBind()方法,这时就访问者与服务已经绑定;如果多次调用bindService()多次绑定服务,则不会有副作用(导致多次绑定);
绑定服务的运行流程如下图所示:Android入门:绑定当地服务


二、Bind Service 核心代码

绑定与解绑定服务

(1)Context.bindService(Intent service,ServiceConnection conn,BIND_AUTO_CREATE);//绑定服务(2)Context.unbindService(ServiceConnection conn);//解除绑定服务

ServiceConnection

ServiceConnection为一个接口,用于绑定和解绑定IBinder,因此需要创建一个类实现它;class XxxServiceConnection implements ServiceConnection{
@Override
public void onServiceConnected(ComponentName name, IBinder service) {//service为在onBind返回的IBinder
//绑定Binder对象
}
@Override
public void onServiceDisconnected(ComponentName name) {
//解绑定Binder对象
}
}


Service类

class XxxService extends Service{private IBinder binder = newXxxBinder();public IBinder onBind(Intent intent){return binder;}public int fun(int a){//服务提供的方法,但是不能直接调用...}private class XxxBinder extends Binder implements IXxxBinder{//面向接口编程public return fun1(int a){//对外暴露的APIreturn fun(a);//内部调用Service的方法}}}

三、BindService案例


场景:服务提供了加法运算的接口,Activity需要调用服务提供的加法运算方法,并返回结果;
效果说明:
Android入门:绑定当地服务


MainActivity.java
package com.xiazdong.bindservice;public interface IAddOp {public int addOpService(int a,int b);}







读书人网 >Android

热点推荐