分类: 嵌入式
2010-09-08 16:38:24
一个Service没有可视化的UI,而是后台长时间运行的。 比如,在用户做其他事情的时候,某个Service能播放背景音乐,或者从互联网抓取数据, 进行计算,然后把结果提供给需要的Activity. 每个Service都继承自Service基类。
一个典型的例子是媒体播放器从播放列表中播放音乐。媒体播放器这个应用程序有多个Activity,并允许用户选择音乐并播放。 然而,音乐的播放并不能被Activity处理,因为用户希望当离开播放器去做其它事情的时候,音乐是照常播放的。为了让音乐继续播放,播放器的 Activity可以启动一个Service并在后台运行。系统可以让音乐播放的Service继续运行,即使当启动这个Service的 Activity从屏幕消。
可以连接(或者称绑定)一个正在运行的Service(Service没有运行,则可将其启动). 连接后,你能通过Service暴露的接口与Service通信。对音乐服务,这些暴露的接口允许用户暂停,回退,停止,重新播放。
跟Activity和其他组件一样,Service运行在应用程序进程的主线程中。 因此,他们不会阻止其他组件或者用户界面。他们经常为一些消耗时间的任务(如音乐播放)产生新的线程。