原文:百度文库 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,很有用,需要认真了解后使用。
本文详细解析了Android StartedService的工作机制,包括其生命周期管理、并发性问题、线程安全以及如何正确地使用startService()启动服务并进行生命周期控制。重点强调了在服务运行过程中可能遇到的问题及解决方案,旨在帮助开发者更高效、合理地利用Android服务功能。
1127

被折叠的 条评论
为什么被折叠?



