美文网首页
Activity 怎么和Service 绑定?

Activity 怎么和Service 绑定?

作者: d85a3f21310a | 来源:发表于2019-05-07 08:47 被阅读0次

    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 绑定?

          本文链接:https://www.haomeiwen.com/subject/resdoqtx.html