关于Android的Service知识点,你知道吗?
目录
学习Service相关知识点:
- 概述;
- Service生命周期;
- Service的基本用法;
- 服务。
- 问:达叔,今日工作累吗?
答:累啊,那么问你,你知道Android中的
Service(服务)吗?~- 问:哥,这么干的吗?
答:呵呵,是的,~
概述:
在Android中Service是一个在后台执行长时间运行操作,而不需要和用户交互的应用程序组件。主要是用来后台处理网络事务,播放音乐,执行文件操作和content provider进行交互等。
- 答:简要地说,Service的运行不依赖任何用户界面,是一直保持在后台运行的。
如果当某个应用程序被关闭时,所有依赖于该应用的服务也就会停止了~ - 问:哦~
对于,Service服务的分两种类:
一:Started Service,二:Bound Service。(英文理解:开启服务,绑定服务)。这两种服务各有各的特色。不过在理解之前,先看看它们的生命周期情况(图片来源于官方):
可以看出两种启动方式区别:
Call to startService -> onCreate() -> onStartCommand() -> Service running -> onDestroy()
Call to bindService() -> onCreate() -> onBind() -> onUnbind() -> onDestroy()
从中可以看出:
一:使用startService()方法启动服务,调用onStartCommand()方法启动Service,启动Service的组件与Service没有联系,所以关闭组件,后台的Service也在运行中。
二:使用bindService()方法绑定来启动服务,调用onBind()方法来启动,将启动Service的组件和Service绑定在一起,关闭组件则Service会停止。
- 问:那有什么要注意的吗?
- 答:其实这两种方法并不冲突,使用startService()启动Service后,可以再使用bindService()方法进行绑定
到时,你在调用stopService()或自身stopSelf()方法和unBindService()方法就行,注重创建与销毁,才能更好理解~
Service的基本用法:
创建一个Service类,重写 onCreate(),onStartCommand(),oonDestroy(),这三种通常使用的方法。
定义一个MyService的类,代码如下:
补充说明:
Service(服务)默认是执行主线程,不是默认运行在子线程,和进程中。如果要进行耗时操作,那么就要在开启子线程操作和使用异步消息处理机制。
不然会出现主线程被(ANR)的情况,ANR为应用无反应。
在创建Service时,系统会自动在配置文件对MyService进行注册:
可利用Intent可以启动和停止Service:
- 问:对于Service内容可以回顾一下吗?
答:额,一:对于Started Service,当一个组件调用startService()方法请求服务时,系统会调用它的生命周期方法,启动后,会在后台无限期运行下去,直到完成工作调用stopSelf()或stopService()方法来终止服务的~
- 问:嗯,好的~
答:额,二:对于Bound Service的启动,当其它组件调用bindService()进行绑定服务时,系统会调用它的生命周期方法,,其中有客户端绑定到Service,那么客户端通过IBinder接口与服务进行通信,客户端通过unbindService()方法进行断开连接,调用onUnbind()方法解绑定,系统调用onDestroy()方法来销毁~
对于掌握Service(服务)知识点。
Service用于后台执行用户指定的操作。
学习不是速成,内容理解,多练多用多查多看即可。
喜欢本文的朋友们
欢迎关注,点赞
收看更多精彩内容
关于Android的Service知识点,你知道吗?的更多相关文章
- Android 保持Service不被Kill掉的方法--双Service守护 && Android实现双进程守护
本文分为两个部分,第一部分为双Service守护,第二部分为双进程守护 第一部分: 一.Service简介:Java.lang.Object ↳Android.content.Context ↳an ...
- Android服务(Service)研究
Service是android四大组件之一,没有用户界面,一直在后台运行. 为什么使用Service启动新线程执行耗时任务,而不直接在Activity中启动一个子线程处理? 1.Activity会被用 ...
- Android中Service 使用详解(LocalService + RemoteService)
Service 简介: Service分为本地服务(LocalService)和远程服务(RemoteService): 1.本地服务依附在主进程上而不是独立的进程,这样在一定程度上节约了资源,另外L ...
- android 入门-Service实时向Activity通过BroadcastReceiver传递数据
引文: http://www.cnblogs.com/linjiqin/p/3147764.html <RelativeLayout xmlns:android="http://sch ...
- android 入门-Service
sdk 1.7 package com.example.hellowrold; import java.util.Random; import com.example.hellowrold.R.id; ...
- Android中Service(服务)详解
http://blog.csdn.net/ryantang03/article/details/7770939 Android中Service(服务)详解 标签: serviceandroidappl ...
- Android中Service的使用
我个人的理解是:我们平时使用的android系统的app的后台应用,就是这个原理 可以利用Service实现程序在后台运行,依照这个原理,可以通过Service来实现关键代码的运行与实现. <一 ...
- 【Android 】Service 全面总结
1.Service的种类 按运行地点分类: 类别 区别 优点 缺点 应用 本地服务(Local) 该服务依附在主进程上, 服务依附在主进程上而不是独立的进程,这样在一定程度上节约了资源,另外L ...
- Android Activity/Service/Broadcaster三大组件之间互相调用
我们研究两个问题,1.Service如何通过Broadcaster更改activity的一个TextView.(研究这个问题,考虑到Service从服务器端获得消息之后,将msg返回给activity ...
随机推荐
- mvc中view与controll之间传递参数时,可以使用url进行传递
mvc中view与controller之间传递参数时,可以使用url进行传递,但是在url的地址中需要加上“id=123”这样的东西才行. 具体如代码: window.location.href = ...
- springBoot拦截器的使用
拦截器是动态拦截Action调用的对象.它提供了一种机制可以使开发者可以定义在一个action执行的前后执行的代码,也可以在一个action执行前阻止其执行.同时也是提供了一种可以提取action中可 ...
- <Dare To Dream 团队>第一次作业:团队亮相
队名:Dare To Dream 2.团队成员组成:学号/姓名(标记团队组长): 201571030333/绽玉林(组长) 201571030132/姚慧霞 201571030308/李金平 2 ...
- 《Spring_Four》第一次作业:团队亮相
part one: 1.队名:Spring_Four 2.团队成员组成:学号/姓名(标记团队组长) 201571030114 李蕾 201571030143 周甜甜 201571030139 张天旭( ...
- android之RefBase
路径 system core libutils include utils RefBase.h namespace android 命名空间是android class TextOutput;// 这 ...
- Pushlet实现后台信息推送(一)
Pushlet是使用较多的后台向前台推送信息的工具.前台订阅某个感兴趣的事件joinListen,触发后台的Pushlet的servlet,为该请求会话建立session,默认这个sessionID是 ...
- 【笔记】计算机原理,网络,Linux操作系统
一,计算机原理 1,化繁为简的思想,产生二进制,产生把所有计算归结为加法运算 二,网络 1,分层思想,产生ISO七层协议,商用了TCP/IP的五层协议 三,Linux操作系统 1,分层思想,硬件-&g ...
- 《CSAPP》页表、页命中、缺页
页表 虚拟存储器系统需要某种方法来判定一个虚拟页是否在DRAM的某个地方. 这些功能由操作系统.存储器管理单元(MMU)中的地址翻译硬件和一个存放在物理存储器中的页表数据结构联合提供. 功能 将虚拟页 ...
- The Moon and Sixpence摘抄
I had not yet learnt how contradictory is human nature; I did not know how much pose there is in the ...
- CentOS_mini下安装docker 之 安装docker CE
警告:切勿在没有配置 Docker YUM 源的情况下直接使用 yum 命令安装 Docker. 原文地址:https://yeasy.gitbooks.io/docker_practice/inst ...