四大组件 — Service - 绑定开启

绑定启动服务


普通服务的生命周期:
创建服务------->开启服务------->解绑服务------->关闭服务
onCreate(); onBind(); onUnbind(): onDestroy();
onCreate方法只会执行一次。


设置绑定服务:
接口类:
1. 首先 创建用于存储并传递数据的接口类,并 创建有参抽象方法
public interface IServiceInterface {
void hello(String name);
------------------------------------------------------------------------------------------------------
绑定启动: 
我们可以将我们所想调用的服务方法,全部抽象为接口中的抽象类,从而可以达到
接口回调的功能。
------------------------------------------------------------------------------------------------------


服务类:
1. 在服务类中,创建私有内部类,该类必须 继承 Binder类,并实现 所定义的接口
private class MyBinder extends Binder implements IServiceInterface{
public void hello(String name){
setHello(name);


2. 在服务类中,创建 有参设值方法
该方法 用于 由私有内部类中的 抽象方法进行调用,将其抽象方法参数进行赋值
public void setHello(String name){
Toast.makeText(this, "你好"+name, 1).show();


3. 重写 onBind方法,并返回 私有内部类对象
public IBinder onBind(Intent intent) {
return new MyBinder();


4. 创建 开启调用的方法,与 停止调用的方法
开启调用方法
public int onStartCommand(Intent intent, int flags, int startId) {


停止调用方法
public void onDestroy() {


视图类:
1. 创建 成员接口对象 IServiceInterface
IServiceInterface iServiceInterface;
2. 创建一个内部类,该类 要求实现 ServiceConnection接口,并重写其中的两个抽象方法
class MyServiceConnection implements ServiceConnection{
        重写方法:
方法一:
当服务开启时,将调用该方法,我们要将 IBinder强转为 回调接口对象
public void onServiceConnected(ComponentName name, IBinder service) {
iServiceInterface = (IServiceInterface) service;


方法二:
当这个服务断开连接的时候会调用的方法
public void onServiceDisconnected(ComponentName name) {

3. 采用绑定的方式开启服务
1. 获取 服务意图
Intent service = new Intent(this, MyService.class);
2. 创建 内部类对象
conn = new MyServiceConnection();
3. 开启 服务意图
bindService(service, conn, Service.BIND_AUTO_CREATE);
参数:
1. 服务意图
2. 内部类对象
3. 服务模式 Service.BIND_AUTO_CREATE:模式作用为,当服务不存在时,自动创建开启服务


4. 调用指定服务
即 接口对象中的 抽象方法
iServiceInterface.hello1("xxxx");


5. 停止服务
------------------------------------------------------------------------------------------------------------------------------------
注意:
在绑定服务中,若直接 停止服务会出现异常。所以我们要对该服务进行解绑服务。
一般我们在Activity 销毁的同时,进行服务解绑。
------------------------------------------------------------------------------------------------------------------------------------
1. 解绑服务
unbindService(conn);
2. 停止服务
stopService(service);













评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值