Android 学习之四大组件(二)——service

来源:互联网 发布:ibarn网盘系统源码 编辑:程序博客网 时间:2024/05/17 03:58

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 理解成线程,它跟线程半毛钱的关系都没有!

举个例子:如果你的 Thread 需要不停地隔一段时间就要连接服务器做某种同步的话,该 Thread 需要在 Activity 没有start的时候也在运行。这个时候当你 start 一个 Activity 就没有办法在该 Activity 里面控制之前创建的 Thread。因此你便需要创建并启动一个 Service ,在 Service 里面创建、运行并控制该 Thread,这样便解决了该问题(因为任何 Activity 都可以控制同一 Service,而系统也只会创建一个对应 Service 的实例)。

4、在 AndroidManifest.xml 里 Service 元素的常见选项

android:name  -------------  服务类名

android:label  --------------  服务的名字,如果此项不设置,那么默认显示的服务名则为类名

android:icon  --------------  服务的图标

android:permission  -------  申明此服务的权限,这意味着只有提供了该权限的应用才能控制或连接此服务

android:process  ----------  表示该服务是否运行在另外一个进程,如果设置了此项,那么将会在包名后面加上这段字符串表示另一进程的名字

android:enabled  ----------  如果此项设置为 true,那么 Service 将会默认被系统启动,不设置默认此项为 false

android:exported  ---------  表示该服务是否能够被其他应用程序所控制或连接,不设置默认此项为 false


0 0
原创粉丝点击