《 Service具体解释(一):什么是Service》

《 Service具体解释(二):Service生命周期》

《Service具体解释(三):Service的使用》

《Service具体解释(四):绑定服务 与 通信》

《Service具体解释(五):使用Messager进行通信》

《Service具体解释(六):进程间通信-AIDL》

Service是Android中经常使用组件之中的一个,它是Android中实现程序后台执行的解决方式,它非常适合用于去执行那些不须要和用户交互且还要长期执行的任务。

这里的后台并非子线程的意思。Service默认并不会执行在子线程中。它也不会执行在一个独立的进程中,它相同执行在UI线程中,因此,不要在Service中执行耗时的操作。假设须要执行耗时的操作,能够在Service中创建子线程来完毕耗时操作。

Service的执行不依赖于不论什么用户界面,及时程序被切换到后台或者用户打开了另外一个应用程序,Service仍然能够保持正常执行。这也正式Service的使用场景。

当某个应用程序进程被杀掉时,全部依赖于该进程的Service也会停止执行。

Service 与 Thread的差别

非常多时候,你可能会问,为什么要用 Service。而不用 Thread 呢。由于用 Thread 是非常方便的,比起 Service 也方便多了,以下我具体的来解释一下。

1). Thread:Thread 是程序执行的最小单元,它是分配CPU的基本单位。能够用 Thread 来执行一些异步的操作。

2). Service:Service 是android的一种机制,当它执行的时候假设是Local Service。那么相应的 Service 是执行在主进程的 main 线程上的。如:onCreate。onStart 这些函数在被系统调用的时候都是在主进程的 main 线程上执行的。假设是Remote Service,那么相应的 Service 则是执行在独立进程的 main 线程上。因此请不要把 Service 理解成线程,它跟线程半毛钱的关系都没有!

上面的描写叙述还是不够直观,要想真正理解Service与Thread的差别,我么要冲android的系统机制或者功能上来分析了。

首先Service是Context的子类,所以你能够在Service中调用Context的全部方法。同一时候你也能够在不论什么有Context的地方调用Context.startService、Context.stopService、Context.bindService,Context.unbindService。来控制它,你也能够在 Service 里注冊 BroadcastReceiver。在其它地方通过发送 broadcast 来控制它,当然这些都是 Thread 做不到的。

很多其它关于Service与Thread的差别,等我们渐渐的学习Service之后。对Service有了全面的了解之后,我们就会深有体会了。

Service具体解释(一):什么是Service的更多相关文章

  1. Service具体解释(二):Service生命周期

    < Service具体解释(一):什么是Service> < Service具体解释(二):Service生命周期> <Service具体解释(三):Service的使用 ...

  2. Android服务Service具体解释(作用,生命周期,AIDL)系列文章-为什么须要服务呢?

    Android服务Service具体解释(作用,生命周期,AIDL) 近期沉迷于上班,没有时间写博客了.解衣入睡,未眠.随起床写一篇博客压压惊! ##我们android系统为什么须要服务Service ...

  3. WIN7 + IIS7 Service Unavailable HTTP Error 503. The service is unavailable.

    在win7上开启IIS功能,进行网站发布. 但是开启IIS之后,打开默认网站都打不开,显示 Service Unavailable HTTP Error 503. The service is una ...

  4. 11、四大组件之二-Service高级(二)Native Service

    一.Service的分类 1.1>Android Service 使用Java编写在JVM中运行的服务 1.2>Native Service 使用C/C++完成的服务,一般在系统开始时完成 ...

  5. Android笔记二十七.Service组件入门(一).什么是Service?

    转载请表明出处:http://blog.csdn.net/u012637501(嵌入式_小J的天空) 一.Service 1.Service简单介绍     Service为Android四大组件之中 ...

  6. Oozie时出现org.apache.oozie.service.ServiceException: E0103: Could not load service classes, Cannot load JDBC driver class 'com.mysql.jdbc.Driver'

    不多说,直接上干货! 问题详情 查看你的$OOZIE_HOME/logs 我的是/home/hadoop/app/oozie-4.1.0-cdh5.5.4/logs/oozie.log文件 [hado ...

  7. Service官方教程(4)两种Service的生命周期函数

    Managing the Lifecycle of a Service The lifecycle of a service is much simpler than that of an activ ...

  8. CentOS7 执行 service iptables save 报错 The service command supports only basic LSB actions xxxxxx

    现象描述 在 CentOS 7.6.1810 下执行 service iptables save 命令,出现如下错误: [root@test ~]# service iptables save The ...

  9. Job for docker.service failed because start of the service was attempted too often. See "systemctl status docker.service" and "journalctl -xe" for details. To force a start use "systemctl reset-failed

    安装docker时,自己添加了国内的hub.docker.com镜像 [root@ce-docker ~]# systemctl restart docker 出现以下报错:Job for docke ...

随机推荐

  1. PHP中文件锁与进程锁的使用区别

    php中文网的一篇文章,收为己用了.源地址: http://www.php.cn/php-weizijiaocheng-376853.html 本篇文章主要介绍了PHP 文件锁与进程锁的使用示例,小编 ...

  2. Python3与SQLServer、Oracle、MySql的连接方法

    环境: python3.4 64bit pycharm2018社区版 64bit Oracle 11 64bit SQLServer· Mysql 其中三种不同的数据库安装在不同的服务器上,通过局域网 ...

  3. requests库的学习——跟随官方文档

    发送GET请求: import requests r=requests.get("http://www.kekenet.com/") 如果需要传递参数可以有以下几种方法: impo ...

  4. C/C++编程之内存管理

    内存分配方式 内存分配方式一共有三种: (1)从静态存储区域分配: 内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在,例如,全局变量,静态变量. (2)在栈上创建: 在执行函数时, ...

  5. JavaScript正则表达式-重复次数(数量词)

    *:表示对前面表达式的匹配出现零次或多次. var reg_pattern = /bo*/;//匹配b.bo.boooo +:表示对前面表达式的匹配连续出现一次或多次. var reg_pattern ...

  6. php expat+DOM+SimpleXML XML读取

    XML 文件 将在我们的例子中使用下面的 XML 文件: <?xml version="1.0" encoding="ISO-8859-1"?> & ...

  7. go的相关用法

    1. have gone to和have been to的区别 have gone to和have been to的区别如下: 1.have gone to,第三人称时用 has gone to ha ...

  8. Appium+python自动化-环境搭建

    一.前言 本文是在windows10  X64系统下搭建appium,流程如下: 1.安装jdk1.8+python3.6 (64位) 2.安装node.js 3.安装Appium-desktop 4 ...

  9. 【机房收费系统 4】:VB获取标准北京时间,免除时间误差

    导读:这又是师傅给我指出的一个问题,说实话,其实开始根本没有当回事,觉得麻烦,可是,等我完成了获取标准北京时间后,我发现,这一步,是必须的.谢谢师傅对我的严格要求,让我一步一步的成长起来! 一.事件缘 ...

  10. BZOJ 4823 [Cqoi2017]老C的方块 ——网络流

    lrd的题解:http://www.cnblogs.com/liu-runda/p/6695139.html 我还是太菜了.以后遇到这种题目应该分析分析性质的. 网络流复杂度真是$O(玄学)$ #in ...