当程序使用startService()和stopService()来启动、关闭服务时,服务与调用者之间基本不存在太多关联,也无法与访问者进行通信、数据交互等。如果服务需要与调用者进行方法调用和数据交互,应该使用bindService()和unbindService()来启动、关闭服务。
bindService()方法的完整方法名为bindService(Intent service,ServiceConnection conn,int flags),该方法的三个参数解释如下:
Intent对象用于指定要启动的Service。
ServiceConnection对象用于监听调用者与Service之间的连接状态。当调用者与Service连接成功时将回调该对象的onServiceConnected(ComponentName name,IBinder service)方法;断开连接时将回调该对象的onServiceDisconnected(ComponentName name)方法。
flags:指定绑定时是否自动创建Service(如果Service还未创建)。该参数可指定为0即不自动创建,也可指定为BIND_AUTO_CREATE即自动创建。
为了让同学们理解和使用bindService()方法来启动服务,接下来通过一个案例来演示。本案例实现了点击按钮绑定服务、调用服务中的方法以及解绑服务,具体步骤如下:
(1)创建程序
布局文件activity_main.xml的代码如下:
(2)创建Service类
接下来在服务中添加一个MyService类,该类实现了绑定服务生命周期中的三个方法以及自定义的一个methodInService()方法。MyService类的代码如下:
(3)清单文件的配置
在清单文件中注册服务MyService,具体代码如下:(www.daowen.com)
(4)编写界面交互代码
接下来在MainActivity中编写与页面交互的代码,用于实现绑定服务、调用服务中的方法以及解绑服务,具体代码如下:
(5)运行程序查看结果
运行当前程序,单击界面上的“绑定服务”按钮,此时在LogCat窗口中会打印出服务绑定的Log信息,如图13-4所示。
图13-4 绑定服务
单击“调用服务中的方法”按钮,此时控制台会打印调用自定义的方法,如图13-5所示。
图13-5 调用服务中的方法
接下来单击“解绑按钮”按钮此时系统会调用onUnbind()方法解绑服务,如图13-6所示。
图13-6 解绑服务
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。