Service的两种启动方式及其之间的区别
2015-12-14 11:37
267 查看
作为Android四大组价之一的Service,可以在很多场合中进行应用。比如当在播放音频的时候用户启动了其他Activity,这个时候程序要在后台继续播放,比如检测SD卡上文件的变化,或者在后台记录用户地理位置信息的变化等等。开启Service主要有两种方式。
(1)startService();此种开启方式Service会经历onCreate()--onStart()。若Service还没运行,则先调用onCreate(),然后调用onStart();如果Service已经启动,则只会调用onStart()。一个Service的onStart()方法可以被调用多次。stopService的时候直接onDestroy,如果是调用者自己直接退出而没有调用stopService的话,Service会一直在后台运行。
注:多次调用startService()方法并不会嵌套,所以无论同一个服务被启动了多少次,一旦调用stopService()或者sopSelf(),他都会立刻停止。
(2)bindService():此种启动方式Service会经历onCreate()--onBind(),onBind将会返回给客户端一个IBind接口实例,IBind允许客户端回调服务的方法,比如得到Service的运行状态等。这个时候调用者会和Service绑定在一起,调用者退出的时候,Service就会调用onUnbind--onDestroy退出。
(1)startService();此种开启方式Service会经历onCreate()--onStart()。若Service还没运行,则先调用onCreate(),然后调用onStart();如果Service已经启动,则只会调用onStart()。一个Service的onStart()方法可以被调用多次。stopService的时候直接onDestroy,如果是调用者自己直接退出而没有调用stopService的话,Service会一直在后台运行。
注:多次调用startService()方法并不会嵌套,所以无论同一个服务被启动了多少次,一旦调用stopService()或者sopSelf(),他都会立刻停止。
(2)bindService():此种启动方式Service会经历onCreate()--onBind(),onBind将会返回给客户端一个IBind接口实例,IBind允许客户端回调服务的方法,比如得到Service的运行状态等。这个时候调用者会和Service绑定在一起,调用者退出的时候,Service就会调用onUnbind--onDestroy退出。
相关文章推荐
- c++中的强制转换static_cast、dynamic_cast、reinterpret_cast
- ARM basic training
- Redis快速入门
- 安装g++
- Linux日志系统(Logcheck)的安装预配置
- &和&&的区别
- JDK
- Win7系统在哪里修改气泡屏幕保护样式?怎么修改?
- ActiveMQ的安全配置
- php foreach 意外情况简述
- WebService:JDK发布service
- 图解Android - Zygote, System Server 启动分析
- ref(C# 参考)
- JS与C#编码解码
- C++11 元编程 判断是否有std::hash<T>特例并提供hash函数通用实现
- [Unity3D学习]3D数学基础之向量
- 谷歌浏览器(chrom)快捷键整理
- iOS开发根本布景介绍
- 记录一次“任意文件下载”高危漏洞
- Oracle官方文档