版权声明:本文为博主原创文章,转载请注明出处http://blog.csdn.net/u013132758。 https://blog.csdn.net/u013132758/article/details/49160021
Android 学习之四大组件(二)——service
1、什么是Service
Service没有用户界面,运行在后台。负责处理一些用户看不到的、并且有持续时间的事情。有时候我们退出应用,Service并没有结束,它仍在后台运行,一般在播放音乐,下载数据等情况下会用到Service。
2、service的种类
service按照不同的方式有不同的分类。
按运行地点:本地服务(Local)、远程服务(Remote)。
按运行类型:前台服务、后台服务。
按使用方式:startService启用的服务、BindService启用的服务、两者同时启用的服务。
3、service与Tread的区别
(1) Thread:Thread (线程)是程序执行的最小单元,它是分配CPU的基本单位。可以用 Thread 来执行一些异步的操作。
(2)Service:Service 是android的一种机制,当它运行的时候如果是Local Service,那么对应的 Service 是运行在主进程的 main 线程上的。如:onCreate,onStart 这些函数在被系统调用的时候都是在主进程的 main 线程上运行的。如果是Remote Service,那么对应的 Service 则是运行在独立进程的 main 线程上。因此请不要把 Service 理解成线程,它跟线程半毛钱的关系都没有!
举个例子: 如果你的 Th r ead 需要不停地隔一段时间就要连接服务器做某种同步的话,该 Th r ead 需要在 Activity 没有sta r t的时候也在运行。这个时候当你 sta r t 一个 Activity 就没有办法在该 Activity 里面控制之前创建的 Th r ead。因此你便需要创建并启动一个 Se r vice ,在 Se r vice 里面创建、运行并控制该 Th r ead,这样便解决了该问题(因为任何 Activity 都可以控制同一 Se r vice,而系统也只会创建一个对应 Se r vice 的实例)。4、在 AndroidManifest.xml 里 Service 元素的常见选项
android:name ------------- 服务类名
android:label -------------- 服务的名字,如果此项不设置,那么默认显示的服务名则为类名
android:icon -------------- 服务的图标
android:permission ------- 申明此服务的权限,这意味着只有提供了该权限的应用才能控制或连接此服务
android:process ---------- 表示该服务是否运行在另外一个进程,如果设置了此项,那么将会在包名后面加上这段字符串表示另一进程的名字
android:enabled ---------- 如果此项设置为 true,那么 Service 将会默认被系统启动,不设置默认此项为 false
android:exported --------- 表示该服务是否能够被其他应用程序所控制或连接,不设置默认此项为 false