一旦在项目的任何位置调用了Context的startService() 方法,相应的服务就会启动起来,并回调onStartCommand()
方法。如果这个服务之前还没有创建过,onCreate() 方法会先于onStartCommand() 方法执行。服务启动了之后会一直
保持运行状态,直到stopService() 或stopSelf() 方法被调用。注意,虽然每调用一次startService() 方法,
onStartCommand() 就会执行一次,但实际上每个服务都只会存在一个实例。所以不管你调用了多少次startService()
方法,只需调用一次stopService() 或stopSelf() 方法,服务就会停止下来了。

另外,还可以调用Context的bindService() 来获取一个服务的持久连接,这时就会回调服务中的onBind() 方法。
类似地,如果这个服务之前还没有创建过,onCreate() 方法会先于onBind() 方法执行。之后,调用方可以获取到
onBind() 方法里返回的IBinder 对象的实例,这样就能自由地和服务进行通信了。只要调用方和服务之间的连接没有断开,
服务就会一直保持运行状态。

当调用了startService() 方法后,又去调用stopService() 方法,这时服务中的onDestroy() 方法就会执行,表示
服务已经销毁了。类似地,当调用了bindService() 方法后,又去调用unbindService() 方法,onDestroy() 方法
也会执行,这两种情况都很好理解。但是需要注意,我们是完全有可能对一个服务既调用了startService() 方法,又调
用了bindService() 方法的,这种情况下该如何才能让服务销毁掉呢?根据Android系统的机制,一个服务只要被启动或
者被绑定了之后,就会一直处于运行状态,必须要让以上两种条件同时不满足,服务才能被销毁。所以,这种情况下要同时调
用stopService() 和unbindService() 方法,onDestroy() 方法才会执行。

这样你就已经把服务的生命周期完整地走了一遍。

Android四大组件之Service --- 服务的生命周期的更多相关文章

  1. Java乔晓松-android的四大组件之一Service(服务的绑定)

    android的四大组件之一Service(服务的绑定) 怎么绑定服务,又怎么解除服务,代码如下: MainActivity.java源码: package com.example.lesson14_ ...

  2. Android四大组件之Service

    Android四大组件之Service Android支持服务的概念,服务是在后台运行的组件,没有用户界面,Android服务可用有与活动独立的生命周期.Android支持两种类型的服务: 本地服务: ...

  3. 【Android开发日记】之入门篇(五)——Android四大组件之Service

    这几天忙着驾校考试,连电脑都碰不到了,今天总算告一段落了~~Service作为Android的服务组件,默默地在后台为整个程序服务,辅助应用与系统中的其他组件或系统服务进行沟通.它跟Activity的 ...

  4. Android成长日记-Android四大组件之Service组件的学习

    1.什么是Service? Service是Android四大组件中与Activity最相似的组件,它们都代表可执行的程序,Service与Activity的区别在于:Service一直在后台运行,它 ...

  5. Android四大组件:Service

    前言 Service作为Android四大组件之一,应用非常广泛 本文将介绍对Service进行全面介绍(基础认识.生命周期.使用和应用场景) 目录 目录 1. 基础知识 定义:服务,属于Androi ...

  6. android 四大组件之---Service

    服务 服务的生命周期 --- 1 开启服务的生命周期 完整的生命周期:onCreate()-->onStartCommand()-->onDestroy() * 开启服务:onCreate ...

  7. Android四大组件之—— 使用服务进行后台操作

    什么是服务 服务是一个没有可视化界面的组件,它可以在后台长期运行并进行各种操作. 服务的创建 我们只需要继承Service类并实现相应的方法即可创建服务 要想启动服务,还得在AndroidManife ...

  8. Android 四大组件之service与Broadcast

    Android 四大组件之一:service: Service有五个生命周期:onCreat,onStartCommand, onBind,onUnbind, onDestroy 主要有绑定和非绑定两 ...

  9. Android四大组件之一Service介绍-android学习之旅(十二)

    基本概念: service是android四大组件之一,运行在后台执行耗时操作,并不提供用户界面.其他组件如acticity可以通过startService启动该组件,也可以通过bindService ...

随机推荐

  1. Summary on deep learning framework --- TensorFlow

     Summary on deep learning framework --- TensorFlow Updated on 2018-07-22 21:28:11 1. Check failed: s ...

  2. java三种注释以及参数涵义(转)

    原文地址:https://www.cnblogs.com/miys/p/4bf714ce33068dcf9ac6526309c9b5e6.html 单行注释:// 注释内容 多行注释:/*... 注释 ...

  3. Linux常用命令——文本编辑器Vim

    Linux常用命令--文本编辑器Vim Linux  Vim常用操作 插入命令 a 在光标所在字符后插入 A 在光标所在行尾插入 i 在光标所在字符前插入 I 在光标所在行首插入 o 在光标下插入新行 ...

  4. 远程和Ubuntu服务器进行Socket通信,使用python和C#(准备篇)

    服务器在阿里云上,和一般的本地配置方案不太一样,所以网上的博客里没有解决办法,本人在这里记录一下,方便大家交流. 由于数据要保存到MySQL数据库中,使用python对数据进行操作,爬到数据直接进行保 ...

  5. input[type=file]的美化

    __ 一般的选择框在美化过程中会出现各种问题,样式出错,文字无法更改等... 所有随之而生的便是这样的一种修饰方式:[将type=file的input与另一个按钮通过js绑定,这样便可以通过改变另一个 ...

  6. HDU 5115 (杀狼,区间DP)

    题意:你是一个战士现在面对,一群狼,每只狼都有一定的主动攻击力和附带攻击力.你杀死一只狼.你会受到这只狼的(主动攻击力+旁边两只狼的附带攻击力)这么多伤害~现在问你如何选择杀狼的顺序使的杀完所有狼时, ...

  7. postgres 11 单实例最大支持多少个database?

    有人在pg8时代(10年前)问过,当时说10000个没问题,而且每个db会在/base下建立1个文件夹, 文件ext3只支持32000个子文件夹,所以这是上限了. 而现在早就ext4了,根本没有限制了 ...

  8. postman(十):配置jenkins自动发送邮件(邮件包含测试报告)

    继续说一下jenkins与postman的集成 上一篇通过jenkins远程执行postman导出的脚本,并把html报告指定输出到了jenkins对应的job工作空间,接下来配置一下当jenkins ...

  9. 新工具DPR的一些想法

    可行性分析 假设: 连续性 - 与clustering的假设正好相反 分支事件 特征的选择:距离的度量: 限定KNN的必要性: MST构建: 主支的构建和简化:省略中间点:最短路径: 迭代处理所有分支 ...

  10. opencv的一些功能代码

    opencv调用摄像头 #include<opencv2/opencv.hpp> using namespace cv; void main(){ VideoCapture cap; ca ...