Service作为Android四大组件

  • Service
  • Activity
  • ContentProvider
  • BroadcastReceiver

之一,应用非常广泛,和Activity一样,Service也有一系列的生命周期回调函数。


1.生命周期流程图:


  • onCreate():

    首次创建服务时,系统将调用此方法。如果服务已经运行,则不会调用此方法,该方法只调用一次。

  • onStartCommand():

    当另一个组件通过调用starService()请求启动服务时,系统将调用此方法。

  • onDestroy():

    当服务不在使用且将被销毁时,系统将调用此方法。

  • onBind():

    当另一个组件通过调用bindService()与服务绑定时,系统将调用此方法。

  • onUnbind():

    当另一个组件 通过调用unbindService()与服务解绑时,系统将调用此方法。

  • onRebind():

    当旧的组件与服务解绑后,另一个新的组件与服务绑定时,onUnbind()返回true时,系统将调用此方法。

2.生命周期方法

在Service的生命周期中,常用的方法有:

  • 手动调用的方法:
手动调用的方法 作用
startService() 启动服务
stopService() 关闭服务
bindService() 绑定服务
unbindService() 解绑服务
  • 自动调用的方法
自动调用方法 作用
onCreat() 创建服务
onStartCommand() 开始服务
onDestroy() 销毁服务
onBind() 绑定服务
onUnbind() 解绑服务

3.生命周期的调用

  1. 启动Service服务

    单次:startService()->onCreate()->onStartCommand()

    多次:startService()->onCreate()->onStartCommand()->onStartCommand()
  2. 停止Service服务

    stopService() —> onDestroy()
  3. 绑定Service服务

    bindService() —> onCreate() —> onBind()
  4. 解绑Service服务

    unbindService() —> onUnbind() —> onDestroy()
  5. 启动绑定Service服务

    startService() —> onCreate() —> onStartCommand() —> bindService() —> onBind()
  6. 解绑停止Service服务

    unbindService() —> onUnbind() —> stopService() —> onDestroy()
  7. 解绑绑定Service服务

    unbindService() —> onUnbind(ture) —> bindService() —> onRebind()

参考资料

Android中service的生命周期的更多相关文章

  1. Android 测试Service的生命周期

    package com.example.myapp4; import android.support.v7.app.ActionBarActivity; import android.content. ...

  2. 18_Android中Service的生命周期,远程服务,绑定远程服务,aidl服务调用,综合服务案例,编写一个应用程序调用远程支付宝远程服务场景

    ============================================================================ 服务的生命周期: 一.采用start的方式开始 ...

  3. android基础---->service的生命周期

    服务是一个应用程序组件代表应用程序执行一个长时间操作的行为,虽然不与用户交互或供应功能供其它应用程序使用.它和其他的应用对象一样,在他的宿主进程的主线程中运行.今天我们开始android中普通serv ...

  4. 浅谈Android中Activity的生命周期

    引言 我想对于Android开发人员来说,Activity是再熟悉不过了,今天我们就来探讨下Activity的生命周期.熟悉的掌握Activity对于开发健壮的Android应用程序来说至关重要.下面 ...

  5. Android中Activity的生命周期

    简介: 这个基本是必问的问题了,说一下你对Activity生命周期的理解,呵呵… onCreate, onStart, onResume, onPause, onStop, onDestroy, on ...

  6. 【android】android中activity的生命周期

    activity生命周期: 实例代码: public class DemoActivity extends Activity { //1.activity第一次被创建的时候,执行 @Override ...

  7. Android中服务的生命周期与两种方式的区别

    服务的生命周期跟Activity的生命周期类似.但是生命周期甚至比你关注服务如何创建和销毁更重要,因为服务能够在用户不知情的情况下在后台运行. 服务的生命周期---从创建到销毁---可以被分为以下两个 ...

  8. Android中服务的生命周期回调方法

  9. Android 中Service生命周期

    使用context.startService() 启动Service 其生命周期为context.startService() ->onCreate()- >onStart()->S ...

随机推荐

  1. Java中时间加减的比较

    public class TestDate{ public static void main(String[] args){try{ Date date=new Date(); DateFormat  ...

  2. python中 _、__、__xx__() 区别及使用场景

    1.访问权限(private.public)与继承方式(只有public继承) 在面向对象编程语言中,类的属性与方法都会设置访问控制权限,从而满足我们的设计需求.一般而言,我们通常会将对象的属性设置为 ...

  3. Python分析最近大火的网剧《隐秘的角落》,看看网友们有什么看法

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 估计最近很火的连续剧<隐秘的角落>大家趁着端午假期都看过了吧? ...

  4. 数据库管理与迁移(Liquibase)

    SpringBoot 是为了简化 Spring 应用的创建.运行.调试.部署等一系列问题而诞生的产物,自动装配的特性让我们可以更好的关注业务本身而不是外部的XML配置,我们只需遵循规范,引入相关的依赖 ...

  5. python-循环-两种方法实现九九乘法表

    方法一:用最基本的while循环嵌套(基础时,便于理解) while循环的嵌套,先执行里边的,再执行外边的 i = 1 while i <= 9: j = 1 while j <= i: ...

  6. Solaris 11.4安装,映像包管理系统(IPS)搭建

    文章目录 1.下载地址 2. IPS安装准备 2.1 repo包 2.1 install-repo.ksh 2.2 校验文本 3. Solaris系统安装 3.1 虚拟机软件 3.2 安装os 3.3 ...

  7. 复杂链表的复制(剑指offer-25)

    题目描述 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针random指向一个随机节点),请对此链表进行深拷贝,并返回拷贝后的头结点.(注意,输出结果中请不要返回 ...

  8. Resolve Error While Windows 10 Updating Cross Multiple Updating Versions (Such as Error 0x800f0831 when Update KB4556799) | 解决跨多个更新版本升级Windows 10时遭遇错误的问题(如 KB4556799 / 错误0x800f0831)

    Upgrade memory size for a laptop recently, the OS on the laptop was Windows 10 with a version of 201 ...

  9. 题解:2018级算法第四次上机 C4-商人卖鱼

    题目描述: 样例: 实现解释: 需要简单分析的贪心题 知识点: 贪心,自定义排序,提前存储 题目分析: 卖鱼,鱼卖出去需要时间,鱼没被卖出去之前需要吃饲料 则有,如果卖a鱼的话b鱼会吃饲料c份,而卖b ...

  10. windows下的包管理器scoop

    scoop(传送门) 安装 scoop是一个类似于linux下apt之类包管理器 安装scoop(Powershell 3+  and .NET Framework 4.5+) iex (new-ob ...