Activity 怎么和Service 绑定?

service是不可见的,它的启动、停止和其他控制操作都是通过其他应用程序组件来实现的。

比如最简单的就是在activity中使用startService()来启动一个服务,使其在后台运行。但如果仅仅是这样的话,我们启动一个service后就只能看着它在后台运行却不能对其进行任何操作了。如果想在activity中能够操作service(调用其中的某些方法,让其完成某些动作),我们就必须先把activity和service绑定起来。

如何绑定activity和service?这需要我们实现service中的onBind()函数以返回service实例给activity

在service这个类中,定义一个内部类继承自Binder
public class MyBinder extends Binder{  

public MyService getService(){  

return MyService .this;  

        }  

    }  

private final IBinder binder = newMyBinder(); 

然后重写MyService 的onBind()方法。

@Override  

public IBinder onBind(Intent intent) {  

Log.i(LOG,"onBind............");  

return binder;  

    } 

这样,就在onBind()方法中获取到binder对象,进而可以获取到MyBinder中的getService,获取到Service的实例对象。
在activity中bindservice()的时候,就可以在ServiceConnection 中获取到service的实例。就实现了activity中获取到service的实例对象。就可以调用service中的方法。

你可能感兴趣的:(Activity 怎么和Service 绑定?)