绑定服务调服务方法
Service和Activity通信
上面我们学习了Service的基本用法,启动Service之后,就可以在onCreate()或onStartCommand()方法里去执行一些具体的逻辑了。不过这样的话Service和Activity的关系并不大,只是Activity通知了Service一下:“你可以启动了。”然后Service就去忙自己的事情了。那么有没有什么办法能让它们俩的关联更多一些呢?比如说在Activity中可以指定让Service去执行什么任务。当然可以,只需要让Activity和Service建立关联就好了。
观察MyService中的代码,你会发现一直有一个onBind()方法我们都没有使用到,这个方法其实就是用于和Activity建立关联的,修改MyService中的代码,如下所示:
[java] view plaincopy- publicclassextends publicstaticfinal;
- privatenew
- publicvoid super
- publicintintint returnsuper
- publicvoid super
- public return classextends publicvoid ,
- }
接下来再修改MainActivity中的代码,让MainActivity和MyService之间建立关联,代码如下所示:
[java] view plaincopy- publicclassextendsimplements private private private private private privatenew
- publicvoid
- publicvoid
- protectedvoid super this this this this
- publicvoid switch case newthisclass break case newthisclass break case newthisclass break case break default break }
可以看到,这里我们首先创建了一个ServiceConnection的匿名类,在里面重写了onServiceConnected()方法和onServiceDisconnected()方法,这两个方法分别会在Activity与Service建立关联和解除关联的时候调用。在onServiceConnected()方法中,我们又通过向下转型得到了MyBinder的实例,有了这个实例,Activity和Service之间的关系就变得非常紧密了。现在我们可以在Activity中根据具体的场景来调用MyBinder中的任何public方法,即实现了Activity指挥Service干什么Service就去干什么的功能。
当然,现在Activity和Service其实还没关联起来了呢,这个功能是在Bind
Service按钮的点击事件里完成的。可以看到,这里我们仍然是构建出了一个Intent对象,然后调用bindService()方法将Activity和Service进行绑定。bindService()方法接收三个参数,第一个参数就是刚刚构建出的Intent对象,第二个参数是前面创建出的ServiceConnection的实例,第三个参数是一个标志位,这里传入BIND_AUTO_CREATE表示在Activity和Service建立关联后自动创建Service,这会使得MyService中的onCreate()方法得到执行,但onStartCommand()方法不会执行。
然后如何我们想解除Activity和Service之间的关联怎么办呢?调用一下unbindService()方法就可以了,这也是Unbind Service按钮的点击事件里实现的逻辑。
- 绑定服务调用本地服务中的方法
- Android中服务里面方法的调用,开启,绑定【入门】
- 绑定服务调用本地服务中的方法
- 使用绑定服务并且与Activity通信进行UI更新的两种方法
- 【黑马Android】(10)绑定的方式调用服务的方法/图片的各种操作/人脸识别
- Android--绑定服务调用服务的方法
- 绑定服务调用远程服务中的方法
- Android启动服务和绑定服务的方法调用
- 安卓Service绑定方式启动服务并调用服务中的方法
- 绑定服务调用远程服务中的方法
- Apache 服务绑定域名的方法
- 绑定服务:调用服务内部的方法
- 91_采用绑定服务的方式调用服务里面的方法
- 绑定的方式调用服务的方法
- Tomcat服务绑定域名的方法
- android绑定服务方法使用
- Tomcat服务绑定域名的方法
- 绑定服务:调用远程服务中的方法
- andorid,绑定服务,调用服务的方法
- 绑定方式开始服务&调用服务的方法