安卓 Service和绑定服务
来源:互联网 发布:java管理系统源代码 编辑:程序博客网 时间:2024/05/17 04:52
一:
startService()
缺陷:我们不能调用服务里面的方法,不可以与服务进行通讯
bindService()绑定服务
可以间接的调用到服务里面的方法,可以与服务进行通讯
二:
绑定服务调用服务方法的步骤
1:编写服务代码
public IBinber onBinb(Intent intent){ }
2:再服务内定义一个代理人 MyBinder
代理人对象有一个方法可以间接的调用服务内部的方法
3:在onBind方法厘米那返回代理人对象
4:在Activity代码采用绑定的方式连接到服务
bingService(intent,new Myconn(),BIND_AUTO_CREATE)
5:在serviceConnection的实现类里面有一个方法,获取都服务返回的代理人对象
public void onserviceConnected(ComponentName name,IBinder service)
6:强制类型转换
‘ myBind = (IBinder)service
7:调用代理人方法--间接调用服务里面的方法
三:
绑定方式开启服务的生命周期
1:绑定的方式开启服务,如果服务不存在,oncreat -> onbind
2:服务的onstart 和 onstartcommand()方法不会被执行
3:接触绑定服务 onunbind()->ondetroy()
4:对此绑定服务,服务只会被创建一次,oncreat方法只会被执行一次
5:多次绑定服务,onbind方法不会被重复调用
6:在实际开发的时候,如果需要调用服务的方法,就绑定服务,只能绑定一次
7:服务只可以解绑一次,如果用同一个conn对象多次解绑,服务会抛出异常
四:
两种开启服务方式的比较
1:start的方式开启服务
服务一旦开启,长期在后台运行
服务和开启者(activity)没有任何的关系,开启者退出服务,服务还是会继续在后台长期运行
开启者(acticity)不可以调用服务中的方法
在系统设置里面可以看的到
2: bing的方式开启服务
如果开启者(activity)退出了,服务也会跟着挂掉
开启者(activity)可以间接的利用中间人调用服务里面的方法
在系统设置里面可以看不到
服务如果被开启同时被绑定,服务就停不掉了,必须解除绑定服务次啊可以停止服务
五:
混合的方式开启服务
为了保证服务既能长期在后台运行,又能调用到服务里面的方法,采用混合的方式开启服务
步骤:
1:start的方式开启服务(保证服务长期在后台运行)
2:bind的方式开启服务(调用服务的方法)
3:unbind的方法接触绑定服务
4:stop的方式停止服务
- 安卓 Service和绑定服务
- 安卓:service,启动service和绑定service生命周期
- 安卓绑定本地服务Service并与之通信
- 安卓Service服务
- 安卓绑定本地服务和远程服务
- 安卓Service绑定方式启动服务并调用服务中的方法
- 安卓服务Service详解
- 安卓Service系统服务
- 安卓基础:服务Service
- 安卓 服务(Service)
- 安卓服务Service详解
- 安卓服务service全解,生命周期,前台服务、后台服务,启动注销、绑定解绑,注册
- Android Service 之绑定服务和AIDL
- Service中绑定服务和启动服务的区别
- service(服务绑定)
- service(服务绑定)
- Service绑定本地服务
- Service绑定服务
- Android里回调(callback)的简单用法
- switch case语句里面不能定义对象,解决方法
- liblinear实践初步
- CSS浮动(float,clear)通俗讲解
- 训练神经网络的五大算法
- 安卓 Service和绑定服务
- Gneymotion无法启动和Oracle VM VirtualBox常见问题
- Callable 和 FutureTask
- Hibernate 关系映射 many-to-many
- Java操作Hbase进行建表、删表以及对数据进行增删改查,条件查询
- 算法库algorithm-0-概览
- 错误解决 Can't create handler inside thread that has not called Looper.prepare()
- Cesium viewer 最常用的控件 API
- extjs 循环执行多个异步请求时,参数和后台以及相关问题和衍生问题的处理