Android开发:Service
来源:互联网 发布:医院网络总监 编辑:程序博客网 时间:2024/06/16 05:50
Service是Android的四大组件之一,在后台运行,是不可见的
Service不是一个单独的进程,Service对象本身并不意味着他运行在自己的进程中,除非另有规定,否则和程序运行在一个进程中。。
Service不是一个线程,是运行在主线程中的,如果要进行下载数据的一些耗时操作时,需要开启一个子线程,否则会造成ANR异常。
Service有两种启动模式:
1,startService:生命周期-onCreate-onStartCommand-onDestory;其中运行过程是,当调用startService第一次启动的时候,Service的生命周期会执行onCreate和 onStartCammand方法,但第二次调用则会执行onStartCammand,当调用stopService时,Service的生命周期会执行onDestory方法。
停止Service的方式有两种:context调用stopService或者Service自身调用stopSelf。
onStartCommand方法中的返回值的类型:
START_STICKY 粘性服务 常量1 当服务被系统异常杀死之后 服务会被重启 但是Intent 值为 null
START_NOT_STICKY 非粘性服务 常量2 当服务被系统异常杀死之后 服务不会重启
START_REDELIVER_INTENT 常量3 当服务被系统异常杀死之后 服务会重启 并且 Intent 有值
START_STICKY_COMPATIBILITY 常量0 当服务被系统异常杀死之后 服务不一定会重启 START_STICKY的兼容版本 了解
2,bindService:生命周期-onCreate-onBind-onUnbind-onDestory 运行过程中Service生命周期的方法都只调用一次。
1.当多个客户端都与一个Service 都产生绑定关系的时候 Service 的生命周期 也都只会执行一次 但是 Client
中监听与服务链接状态变化的类中的 onServiceConnected方法 会执行(初次链接的时候)
2.当多个客户端都与一个Service
产生绑定关系的时候 ,只有所有的Cilent都调用了unBindService方法的时候 Service 才会执行 onUnbind
3.当已经与服务解除绑定的时候 ,不能再次接触绑定,需要做一个标记 标记当前已经与服务解除绑定了
BindService: 允许Client 与Service 产生链接 并能够获取到Service 对象 并与之交互
为了提供这种绑定的功能 必须实现onBind()方法,需要通过IBinder机制将service对象返回。
- Android开发---Service简析
- Android开发 --- Service 初步
- Android开发之Service
- Android Service开发详解
- android开发 service生命周期
- android的service开发
- Android中开发Service
- android开发 - Service服务
- Android开发Service
- Android开发之Service
- Android开发之Service
- Android开发:Service
- Android开发之Service
- Android开发之Service初步
- Android开发之Service浅谈
- android 服务(service)开发
- Android开发笔记:Web Service
- Android开发之service浅谈
- 原型对象--继承
- 苦练代码能力--(Thinking、Coding)
- 利用ODBC把.accdb格式数据导入到SQL Server
- 【gradle】 使用 gradle 在控制台输出中文乱码解决
- java多线程实例---很有用 详细介绍
- Android开发:Service
- BYTE WORD DWORD
- linux查看指定目录下最大的10个文件
- iOS开发 - 如何使用请求头鉴权
- oss在thinkjs上传demo
- Java中的回调方法
- Postgres 主从复制搭建步骤
- 存储图片到本地、提取本地存储的图片
- 【复习题】:哈工大软件学院无线传感器网络期末考试题