Android SDK 开发之 Services 服务
2010-03-23 04:08:00 来源:WEB开发网Service
Service
Class Overview 提要
Service Lifecycle 服务生命周期
Permissions 权限
Process Lifecycle 进程生命周期
Summary 总结
Class Overview 提要
服务(Service)是一个在后台运行的组件, 它一直保持运行, 并且不和用户进行交互. 每个服务类必须在它所在的包的AndroidManifest.xml中有一个声明. Service使用Context.startService() 和 ontext.bindService()启动.
和其他应用程序对象一样, 服务在主线程中运行. 这意味着如果你的服务想做任何CPU密集型或者阻塞性的操作, 那么最好是创建一个线程来做.
Service 类是应用程序的生命周期中的重要组成部分.
Service Lifecycle 服务生命周期
系统启动服务有两个原因. 如果有人调用Context.startService(), 那么启动会获取该服务(如果需要的话使用onCreate()来创建它)然后调用它的onStartCommand(Intent, int, int)方法, 传入客户提供的参数. 这时候服务会一直运行直到Context.stopService()或者stopSelf()被调用. 注意多个Context.startService()调用不会嵌套(虽然它们会导致多个onStartCommand()调用), 所以无论服务被启动了多少次, 一旦调用Context.stopService()或者stopSelf(), 则服务就会停止. 服务可以使用stopSelf(int)方法来保证启动的intent被处理后才会被停止.
对于启动了的服务, 根据onStartCommand()返回值的不同, 有两种额外的操作模式.
START_STICKY是显式启动和停止的服务使用的, 而START_NOT_STICKY 或者START_REDELIVER_INTENT是只在处理命令时才运行的服务使用的.
START_NOT_STICKY 如果服务进程在它启动后(从onStartCommand()返回后)被kill掉, 并且没有新启动的intent传给他, 那么将服务移出启动状态并且不重新生成, 直到再次显式调用Context.startService().
START_REDELIVER_INTENT 如果服务进程在它启动后(从onStartCommand()返回后)被kill掉, 那么它将会被重启, 并且最后传给它的intent会被重新传给它, 通过onStartCommand(Intent, int, int).
START_STICKY 如果服务进程在它启动后(从onStartCommand()返回后)被kill掉, 那么让他呆在启动状态但不取传给它的intent.
客户也可以使用Context.bindService()来取得和服务的永久性链接. 如果服务没有启动, 那么这将创建它(调用onCreate()),
- ››Android 当修改一些代码时,使用什么编译命令可以最...
- ››Android 如何添加一个apk使模拟器和真机都编译进去...
- ››Android 修改Camera拍照的默认保存路径
- ››Android 如何修改默认输入法
- ››android开发中finish()和System.exit(0)的区别
- ››Android手势识别简单封装类
- ››android中查看项目数字证书的两种方法
- ››Android中获取IMEI码的办法
- ››android 相机报错 setParameters failed
- ››Android重启运用程序的代码
- ››Android为ListView的Item设置不同的布局
- ››android bitmap与base64字符串的互相转换
更多精彩
赞助商链接