Android Service 线程问题
2015-06-20 18:03
405 查看
原文:百度文库 started servcie总结
Service的线程问题
默认情况下Service是运行在启动该Service的应用主线程的,如果Service中的操作占用大量的CPU资源或有阻断操作(比如播放MP3或者访问网络)会影响应用主线程的响应性能,甚至会造成“应用程序无响应(ANR)”问题。
什么是StartedService?
就是应用程序组件中通过startService()启动的服务。
StartedService的生命周期问题
一个StartedService一旦被启动将无期限的运行下去。除非调用stopSelf()把自己停止,或者其它应用程序组件调用stopService()把该服务暂停。
所以,为了节省系统资源和电池电量,在通过startService启动一个服务以后,在工作完成以后一定要调用stopSelf()把服务停止。
多次通过startService启动同一个Service会怎么工作?
如果该Service正在运行,多次通过startService启动该Service并不会启动多个该Service。只有第一个请求,才会导致该Service被创建,也就是该Service的onCreate()回调函数会被调用;其它的请求只是会调用onStartCommand()回调函数。
StartedService的并发性问题
在onStartCommand()返回之前,如果有另外的请求通过startService()函数传递到该Service,该Service会一直等到onStartCommand()返回之后才会再次调用onStartCommand()。
onStartCommand的返回值
有三个START_NOT_STICKY、START_STICKY和START_REDELIVER_INTENT,很有用,需要认真了解后使用。
Service的线程问题
默认情况下Service是运行在启动该Service的应用主线程的,如果Service中的操作占用大量的CPU资源或有阻断操作(比如播放MP3或者访问网络)会影响应用主线程的响应性能,甚至会造成“应用程序无响应(ANR)”问题。
什么是StartedService?
就是应用程序组件中通过startService()启动的服务。
StartedService的生命周期问题
一个StartedService一旦被启动将无期限的运行下去。除非调用stopSelf()把自己停止,或者其它应用程序组件调用stopService()把该服务暂停。
所以,为了节省系统资源和电池电量,在通过startService启动一个服务以后,在工作完成以后一定要调用stopSelf()把服务停止。
多次通过startService启动同一个Service会怎么工作?
如果该Service正在运行,多次通过startService启动该Service并不会启动多个该Service。只有第一个请求,才会导致该Service被创建,也就是该Service的onCreate()回调函数会被调用;其它的请求只是会调用onStartCommand()回调函数。
StartedService的并发性问题
在onStartCommand()返回之前,如果有另外的请求通过startService()函数传递到该Service,该Service会一直等到onStartCommand()返回之后才会再次调用onStartCommand()。
onStartCommand的返回值
有三个START_NOT_STICKY、START_STICKY和START_REDELIVER_INTENT,很有用,需要认真了解后使用。
相关文章推荐
- android开发之Android应用性能评测调优
- Android线程篇
- 广告轮播的实现,也适用于引导页-AdCycle
- 基于Android的串口聊天室 (基于tiny4412) 一
- Android【USB名称修改系列】第9项-如何修改UMS在设备管理器中DiskDrive下的名称
- Android编译、打包的步骤
- android中的五大布局和过程流向
- Android 屏幕滑动事件
- android中一个应用程序创建多个图标
- android怎么换背景图片
- Android ListView 单条刷新方法实践及原理解析
- android应用的单元测试
- android view(image,imageButton,...)的旋转
- Android 4.0新增Space及GridLayout初谈
- Android版本和API Level对应关系
- android简单音乐播放器
- android之存储篇——SQLite数据库
- Android init.rc解析
- Android自动化测试“Adb connection Error:远程主机强迫关闭了一个现有的连接”错误解决方案
- android sdk content loader 一直显示0% 问题解决办法