理论教育 使用bind方式启动服务

使用bind方式启动服务

时间:2023-06-12 理论教育 版权反馈
【摘要】:如果服务需要与调用者进行方法调用和数据交互,应该使用bindService()和unbindService()来启动、关闭服务。bindService()方法的完整方法名为bindService,该方法的三个参数解释如下:Intent对象用于指定要启动的Service。ServiceConnection对象用于监听调用者与Service之间的连接状态。为了让同学们理解和使用bindService()方法来启动服务,接下来通过一个案例来演示。图13-5调用服务中的方法接下来单击“解绑按钮”按钮此时系统会调用onUnbind()方法解绑服务,如图13-6所示。

使用bind方式启动服务

当程序使用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 解绑服务

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈