《 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. dom事件机制系列

    JS事件流机制 一个完整的JS事件流是从window开始,最后回到window的一个过程,事件流被分为三个阶段: (1~5)捕获过程.(5~6)目标过程.(6~10)冒泡过程. 通过addEventL ...

  2. linux时钟概念CST与UTC、以及NTP简单设置

    1.世界协调时间(Universal Time Coordinated,UTC): GPS 系统中有两种时间区分,一为UTC,另一为LT(地方时)两者的区别为时区不同,UTC就是0时区的时间,地方时为 ...

  3. PAT Basic 1024

    1024 科学计数法 科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][1-9]"."[0-9]+E[+-][0-9]+,即数字的整数部分只有1 ...

  4. Struts2之初体验

    Struts21.了解Struts2 请求调度框架Struts2是一个MVC框架Struts2类库:Struts2-core Struts2核心XWork-core xwork核心 Struts2的构 ...

  5. 安卓启动图去除顶部title和状态栏

    1.在启动页的xml配置中,设置layout的id, <?xml version="1.0" encoding="utf-8"?> <Line ...

  6. 00032_ArrayList集合的遍历

    1.通过集合遍历,得到集合中每个元素,这是集合中最常见的操作 2.集合的遍历与数组的遍历很像,都是通过索引的方式 public class ArrayListDemo02 { public stati ...

  7. Java-克隆一个对象

    如可方便的克隆一个对象 package com.tj; public class MyClass implements Cloneable { public Object clone() { Clon ...

  8. joyoi1935 「Poetize3」导弹防御塔

    #include <iostream> #include <cstring> #include <cstdio> #include <queue> #i ...

  9. unittest和pytest对比

    一.用例编写规则 1.unittest提供了test cases.test suites.test fixtures.test runner相关的类,让测试更加明确.方便.可控.使用unittest编 ...

  10. iOS WKWebView

    Webkit 是 iOS 8.0 后提供的新的框架,组件WKWebView比较UIWebView 速度更快.占用内存更少了,可支持性更多 WKWebView可通过KVO监听属性 title.estim ...