Developer--Services
来源:互联网 发布:物品记录软件 编辑:程序博客网 时间:2024/06/04 18:18
1、综述
service是能够在后台长期run的应用组件,不提供用户接口。另一个应用组件能够start一个service,即使用户转向另一个应用,后台的service也会保持。甚至,一个组件能够绑定到一个service,然后进行IPC(进程间通信)。举例,一个service能够处理网络请求,播放音乐,与content provider交互等。
2、Service的两种方式
1)Started :一个应用组件(比如 activity)startService().一旦开始,Service会无限期的运行,即使创建它的组件destroy掉。但是,如果服务是下载file,当这个操作完成时,这个服务自己就会停止。
2)Bound:应用组件和service bind在一起,通过 bindService()。一个bound service提供 客户-服务端 接口,允许组件和服务交互,发送request,得到结果,甚至进行IPC。但是,这个时候,service依赖于绑定在一起的application,解除bound之后,serice就destroy了。
注意:service不会自己创建一个线程,最好的方法是你在service里面创建一个新线程去完成耗时操作,以降低ANR(Application Not Responding) 错误,保持主线程的优雅。
3、重要方法
两部分,一部分是重要的回调方法,一般复写在onStarCommand()里面,一部分是提供组件绑定到service的机制。
onStartCommand():通过startService()方法 调用stopSelf() 或 stopService()结束
onBind():通过bindService()需要提供交互的接口,返回IBinder。如果不允许bind,返回空
onCreate():service首次创建时调用,如果已经run,不调用
onDestroy():释放资源
注意,service需要在manifest注册。
开发者文档里也讨论了什么时候会kill掉service,什么service可能会一直run。
下面是生命周期图。
- Developer--Services
- Tools that can help developer debugging web services
- Java Web Services Developer Pack Installation Notes for Windows
- 使用Java Web Services Developer Pack1.6开发WebService入门
- The .NET Developer's Guide to Directory Services Programming
- The Python web services developer: XML-RPC for Python
- Services
- services
- Services
- services
- Services
- Services
- Services
- Services
- Services
- Services
- Services
- Services
- WiFi基本知识
- Android开发之软键盘遮盖EditText
- oracle数据库表的解锁问题
- mybatis实战系列(三)mybatis中的分页使用 动态分页 物理分页
- 解决Win7&Win8 64位下Source Insight提示未完整安装的问题
- Developer--Services
- 字符串的转换
- hadoop 0.0.0.0/0.0.0.0:10020 connection refused
- android 应用性能提升
- TCP通信_客户端代码_C++
- EF框架主键自增长,不能添加数据,ID为0
- 寻找和为定值的多个数
- Hive 的collect_set使用详解
- Building and running MySQL as a local (non-root) user