Service式Android中四大组件之一,在Android开发中起到非常重要的作用。
Service定义
Service(服务)是一个没有用户界面的在后台运行执行耗时操作的应用组件。其他应用组件能够启动Service,并且当用户切换到另外的应用场景,Service将持续在后台运行。另外,一个组件能够绑定到一个Service与之交互(IPC机制),例如,一个Service可能会处理网络操作、播放音乐、操作文件I/O或者内容提供者(content provider)交互,所有这些活动都是在后台进行。
启动方式
Started
通过startService()启动的服务处于“启动的”状态,一旦启动service救灾后台运行,即使启动它的应用组件已经被销毁了。通常started状态的service执行单任务并且不返回任何结果给启动者。比如当下载或者上传一个文件,当这项操作完成时,service应该停止它本身。
Bound
还有一种“绑定”状态的service,通过调用bindService()来启动,一个绑定的service提供一个允许组件与service交互的接口,可以发送请求、获取返回结果,还可以通过夸进程通信来交互(IPC)。绑定的service只有当应用组件绑定后才能运行,多个组件可以绑定一个service,当调用unbind()方法时,这个service就会被销毁了。
Service不能做耗时操作
service与activity一样都存在与当前进程的主线程中,所以,一些阻塞UI的操作,比如耗时操作不能放在service里进行,比如另外开启一个线程来处理诸如网络请求的耗时操作。如果在service里进行一些耗CPU和耗时操作,可能会引发ANR警告,这时应用会弹出是强制关闭还是等待的对话框。所以,对service的理解就是和activity平级的,只不过是看不见的,在后台运行的一个组件,这也是为什么和activity同被说为Android的基本组件。
Service使用方式
startService 启动的服务
主要用于启动一个服务执行后台任务,不进行通信。停止服务使用stopService
bindService 启动的服务
该方法启动的服务可以进行通信。停止服务使用unbindService
startService 同时也 bindService 启动的服务
停止服务应同时使用stepService与unbindService
Service 与 Thread 的区别
很多时候,你可