#Android--Service(2)

117 阅读2分钟

「这是我参与11月更文挑战的第12天,活动详情查看:2021最后一次更文挑战

Service启动服务

将service与activity 链接,Activity中设置连个按钮,Start 用于执行 startService()方法,

stop用于执行stopService()方法,

image.png

image.png

看到当我们点击start 和 stop 时 ,会有回调onStartCommand和 onDestory 被执行.

这个是start();

Service绑定服务

绑定服务是Service的另一种变形,当Service处于绑定状态时,其代表着客户端-服务器接口中的服务器. Binder类

如果我们的服务仅供本地应用使用,不需要跨进程工作,则可以实现自有 Binder 类,让客户端通过该类直接访问服务中的公共方法。其使用开发步骤如下

· 1.创建BindService服务端,继承自Service并在类中,创建一个实现IBinder 接口的实例对象并提供公共方法给客户端调用

· 2.从 onBind() 回调方法返回此 Binder 实例。

· 3.客户端中,从 onServiceConnected() 回调方法接收 Binder,并使用提供的方法调用绑定服务。

例:

创建如图所示的实例,当点击BIND时, activity和service就会绑定,service开始执行oncreate()...

,绑定后,用GET按钮可获得service里的公开服务.,这里设置了一个每秒自增1的count,

GET获取这个数字.

image.png

代码:

1.service提供的binder.

image.png

2.自增的方法

image.png

在activity中获得,

1.创建绑定对象intent,给予目标

2.bindService开启绑定

3.通过onServiceConnected(...)来链接

image.png

image.png

下图为,还未绑定,去点击GET获取count,提示还未绑定,service也没提示 "Service is invoke Created" ,证明未绑定的时候,service没开始执行生命周期

image.png

绑定以后,发现提示 "Service is invoke Created" ,证明绑定完,service就开始执行生命周期 了,使用GET可以得到service里的数据

image.png