Android Service的分类详解
按照启动方式分类
谷歌官网对Service的分类

Service根据启动方式分为两类:Started和Bound。其中,Started()是通过startService()来启动,主要用于程序内部使用的Service,而Bound是通过bindService()来启动,允许多个应用程序共享同一个Service。
Started Service
1.startService()来启动
startService通过Activity的contact
调用startService(service).

2,一旦启动,就运行在后台,即便启动它的对象(Activity)都销毁了
3,通常只启动,不返回值
4,通常网络上传或者下载,操作完成后,自动停止
onStartCommand()
onStartCommand服务里面的方法
Bound Service
1,bindService()来绑定
会调用bindService来绑定
2,提供客户端服务器接口来启动
它有个客户端和服务器段的模型
3,发送请求,得到返回值,甚至通过IPC来通讯
ipc内部进程通讯来进行通讯。
4,一个服务可以被多个调用者绑定,只要有一个绑定者,服务运行,所有绑定者都退出,服务退出
我现在同样是一个服务,我可能用Activity A跟它绑定一下,B跟他绑定一下,当我A退出了的时候,由于B还绑定的,所以这个服务还不会退出。
就是当所有的绑定者都退出了,我们的服务才会退出。
onBind()
他会用到的一个重载方法叫onBind
按服务性质分
Local Service
本地服务,指的就是同一个进程,用于应用程序内部
功能:用于实现应用程序自己的一些耗时任务,比如查询升级信息,并不占用应用程序比如Activity所属线程,而是单开线程后台执行,这样用户体验比较好。
使用:在Service可以调用Context.startService()启动,调用Context.stopService()结束。在内部可以调用Service.stopSelf() 或 Service.stopSelfResult()来自己停止。无论调用了多少次startService(),都只需调用一次stopService()来停止。
Remote Service
远程服务,在android里面远程指的是不同的进程之间也会有服务器端客户端的模型,用于android系统内部的应用程序之间。
功能:可被其他应用程序复用,比如天气预报服务,其他应用程序不需要再写这样的服务,调用已有的即可。
使用:可以定义接口并把接口暴露出来,以便其他应用进行操作。客户端建立到服务对象的连接,并通过那个连接来调用服务。调用Context.bindService()方法建立连接,并启动,以调用 Context.unbindService()关闭连接。多个客户端可以绑定至同一个服务。如果服务此时还没有加载,bindService()会先加载它。
按实现方法分类
Java Service
Native Service
原生服务就是我们用c和c++,实现的系统级的服务我们可以把它当成在library内层。
Native Service,这是Android系统里的一种特色,就是通过C++或是C代码写出来的,供Java进行远程调用的Remote Service,因为C/C++代码生成的是Native代码(机器代码),于是叫Native Service。随着Android系统的性能需求越来越高,Native Service需求将越来越高。

在Service里面要用到它,就不需要再manifest里面配置好,有了配置就知道,manifest所有的元素都是类,所以我们肯定有个Service的类。
Service的配置很简单,就是配置一下它的名字就好了。
原文链接:http://www.maiziedu.com/wiki/component/classify/
Android Service的分类详解的更多相关文章
- Android中Service的使用详解和注意点(LocalService)
Android中Service的使用详解和注意点(LocalService) 原文地址 开始,先稍稍讲一点android中Service的概念和用途吧~ Service分为本地服务(LocalServ ...
- 《Android NFC 开发实战详解 》简介+源码+样章+勘误ING
<Android NFC 开发实战详解>简介+源码+样章+勘误ING SkySeraph Mar. 14th 2014 Email:skyseraph00@163.com 更多精彩请直接 ...
- Android的init过程详解(一)
Android的init过程详解(一) Android的init过程(二):初始化语言(init.rc)解析 本文使用的软件版本 Android:4.2.2 Linux内核:3.1.10 本文及后续几 ...
- Android开发–Intent-filter属性详解
Android开发–Intent-filter属性详解 2011年05月09日 ⁄ Andriod ⁄ 暂无评论 ⁄ 被围观 1,396 views+ 如果一个 Intent 请求在一片数据上执行一个 ...
- Android开发之MdiaPlayer详解
Android开发之MdiaPlayer详解 MediaPlayer类可用于控制音频/视频文件或流的播放,我曾在<Android开发之基于Service的音乐播放器>一文中介绍过它的使用. ...
- Android开发之InstanceState详解
Android开发之InstanceState详解 本文介绍Android中关于Activity的两个神秘方法:onSaveInstanceState() 和 onRestoreInstanceS ...
- ANDROID L——Material Design详解(UI控件)
转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! Android L: Google已经确认Android L就是Android Lolli ...
- android bundle存放数据详解
转载自:android bundle存放数据详解 正如大家所知道,Activity之间传递数据,是将数据存放在Intent或者Bundle中 例如: 将数据存放倒Intent中传递: 将数据放到Bun ...
- Cordova 打包 Android release app 过程详解
Cordova 打包 Android release app 过程详解 时间 -- :: SegmentFault 原文 https://segmentfault.com/a/119000000517 ...
随机推荐
- JSP/Servlet开发——第五章 使用分层实现业务处理
1.JNDI(Java Naming and Directory Interface)Java命名和目录接口: ●JNDI:是一个有关应用序设计的 API 为开发人员提供了查找和访问各种命名和目录服务 ...
- 为什么我用了$().height()还是对不齐呢?
有一个这样的需求:有两个显示内容的框,要使他们高度一致,因为他们存放的内容多少和结构不一样,左边内容少,右边内容多.这就导致了右边会比左边高,解决方法就是超出部分用滚轮显示,那这时就先要调整右边的高度 ...
- 微信js sdk动态引用
一般情况下,微信的js-sdk只需要直接引用script即可 <script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js&qu ...
- QOS-基本拥塞管理机制(PQ CQ WFQ RTPQ)
QOS-基本拥塞管理机制(PQ CQ WFQ RTPQ) 2018年7月7日 20:29 拥塞:是指当前供给资源相对于正常转发处理需要资源的不足,从而导致服务质量下降的一种现象 拥塞管理概述: ...
- socket编程基础1——hostent、in_addr、gethostbyname、inet_ntoa
1. struct hostent结构体 struct hostent { char *h_name; char **h_aliases; int h_addrtype; int h_length; ...
- JQuery中的load()、$.get()和$.post()详解 (转)
load() 1.载入HTML文档 load()方法是jQuery中最为简单和常用的Ajax方法,能载入远程HTML代码并插入DOM中. 它的结构为: load(url [,data][,callba ...
- A problem occurred evaluating project ':'. > ASCII
项目编译出错: 错误信息如下: FAILURE: Build failed with an exception. * Where: Build file 'F:\git\i***\build.grad ...
- cocos2d-x 粒子系统
粒子系统是模拟自然界中的一些粒子的物理运动的效果,如烟雾,下雪,下雨,火,爆炸等. 粒子发射模式 粒子系统的发射模式的时候有两种方式:重力模式和半径模式. 粒子系统属性 属性名 行为 模式 d ...
- CSS实现自适应下保持宽高比
在项目中,我们可能经常使得自己设计的网页能自适应.特别是网站中的图片,经常要求在网页放大(或缩小)时,宽高同时放大(或缩小),而且不变形(即保持正常的长宽比).为了不变形,常用的方法就是设置width ...
- 11-Mysql数据库----单表查询
本节重点: 单表查询 语法: 一.单表查询的语法 SELECT 字段1,字段2... FROM 表名 WHERE 条件 GROUP BY field HAVING 筛选 ORDER BY field ...