一.service简介
Service(服务)是一个没有用户界面的在后台运行执行耗时操作的应用组件。其他应用组件能够启动Service,并且当用户切换到另外的应用场景,Service将持续在后台运行。另外,一个组件能够绑定到一个service与之交互(IPC机制),例如,一个service可能会处理网络操作,播放音乐,操作文件I/O或者与内容提供者(content provider)交互,所有这些活动都是在后台进行。
使用关键:在于与Activity区别,是其在后台有独立运行的生命周期,执行后台任务。还有
service
与
activity
一样都存在与当前进程的主线程中,所以,一些阻塞
UI
的操作,比如耗时操作不能放在
service
里进行,比如另外开启一个线程来处理诸如网络请求的耗时操作。
例如,电话盒子,局域网内UDP通信,后台线程端口监听,接收电话机发来信号,进行反馈,需要长时间启动。还有一些,比如后台菜单更新到本地数据库,多任务下载,临时后台服务,使用
IntentService,
后台任务执行结束后会自动停止,从而一定程度上避免了Service内存泄漏与后台服务驻留消耗内存,这些平时操作中关注程序性能优化
。
二.Service使用解析
1.通过startService来启动的Service
使用context.startService() 启动Service是会会经历:
service没有实例,启动时context.startService() ->onCreate()- >onStart
Command
()—>onStart()->Service running
context.stopService() | ->onDestroy() ->Service stop
service已经启动,调用startService后:onStart
Command
()-->onStart
() --> onDestroy
onStart已经不推荐用了,但是还是列一下吧,以及与onStartCommand()关系。Android