service,中文名称是服务,服务是Android中实现程序后台运行的解决方案,它非常适合去执行那些不需要和用户交互,而且还要长期运行的任务。

服务运行不依赖于任何用户界面,即使程序切换到后台,或者用户打开另一个应用程序,服务仍然能够保持正常运行。

不过需要注意的是,服务并不是运行在一个独立的进程当中的,而是依赖于创建服务时所在的应用程序进程。当某个应用程序进程被杀掉时,所以依赖于该进程的服务也会停止运行。

另外,也不要被服务的后台概念所迷惑,实际上服务并不会自动开启线程,所有的代码都是默认运行在主线城当中的。也就是说,我们需要在服务的内部手动创建子线程,并在这里执行具体任务,否则就有可能出现主次线程被阻塞住的情况。

service有两种启动方式,一种是通过 startService() 来启动的,另一种是通过 bindService() 来启动的。

第一种:通过 startService() 来启动

通过 startService() 来启动方式的生命周期如下:

使用Service的步骤如下:

  1. 定义一个类,并继承 Service
  2. 在 AndroidManifest.xml 文件中配置此 Service
  3. 使用 Context 的 startService(Intent) 方法来启动 Service
  4. 不使用该服务时,调用 stopService(Intent) 方法停止此 Service

如果服务已经开启,就不会重复的执行 onCreate() ,而是调用 onStart() 或 onStartCommand()。而服务停止的时候调用 onDestory() 。

特点:

  • 一旦服务开启跟开启者就没有任何关系;
  • 开启者退出之后,服务还是可以在后台长期运行的。前提是没有调用 stopService(Intent);
  • 开启者不能调用服务里面的方法

第二种:通过 bindService() 来启动

通过 bindService() 来启动方式的生命周期如下:

使用Service的步骤如下:

  1. 定义一个类,并继承 Service
  2. 在 AndroidManifest.xml 中配置此 Service
  3. 使用 Context 的 bindService(Intent, ServiceConnection, int) 方法来启动此 Service
  4. 不使用该服务时,调用 unbindService(ServiceConnection) 方法停止此 Service

绑定服务不会调用 onStart() 或 onStartCommand() 方法。

特点:

  • bind的方式开启服务,绑定服务,调用者挂了,服务也会跟着挂掉。
  • 绑定者可以调用服务里面的方法。

service两种启动方式的区别相关推荐

  1. Service的两种启动方式与区别

    Service的启动方式:startService() 和 bindService() startService() public abstract void startService(Intent ...

  2. 【Django】项目中调用深度学习模型model.predict()(Django两种启动方式runserver和uwsgi的区别)

    目录 问题 测试 解决方法 Django两种启动方式runserver和uwsgi的区别 问题 部署含有深度学习模型的Django项目的uWSGI.Nginx服务器的时候,所有模块都可以正常运行,也可 ...

  3. android启动服务的生命周期,Android Service的两种启动方式以及生命周期

    Service的两种启动方式: 1.startService 2.bindService 注意: .在Android 5.0之后google出于安全的角度禁止了隐式声明Intent来启动Service ...

  4. Tomcat介绍及三种启动方式的区别

    一.Tomcat的下载 二.Tomcat目录说明 三.Tomcat常用命令 四.Tomcat服务的安装 五.Tomcat启动的三种方式 六.三种启动方式的区别 七.Tomcat端口占用问题 一.Tom ...

  5. tomcat两种启动方式

    tomcat的两种启动方式,第一种,直接点击bin/startup.bat启动,第二种注册成服务启动 1.通过startup.bat启动 指定jdk:在tomcat/bin/setclasspath. ...

  6. JavaSE学习总结(八)常用类(上)Object类==与equals方法的区别浅克隆的特点Scanner类String类String两种创建对象方式的区别String类的各种功能

    JavaSE学习总结(八)常用类(上)/Object类/==与equals方法的区别/浅克隆的特点/Scanner类/String类/String两种创建对象方式的区别/String类的各种功能 常用 ...

  7. (一)Service的生命周期和两种启动方式

    Service 一.概念 Service,也是Android四大组件之一.对照Activity的概念,Service属于后台运行的进程,并不需要界面,可以在后台长期运行,适合做比如播放音乐,下载等任务 ...

  8. Android中启动一个服务,Android服务的两种启动方式

    前言:Service是Android的四大组件之一,也是可执行的程序.服务是Android中实现程序后台运行的解决方案,非常适合去执行那些不需要和用户交互而且还要求长期运行的任务.Service的启动 ...

  9. WIN8 与WIN7的64位及32位 分别对Legacy BIOS+MBR和UEFI+GPT两种启动方式和分区架构下的安装可行性分析

    微软系统.相关产品官方镜像下载:http://msdn.itellyou.cn/  关于MBR.GPT.ESP.MSR.EFI.UEFI和WIN8中SECURE BOOT的基础知识:   1.MBR分 ...

最新文章

  1. 几种常用通信协议:IIC协议、SPI协议、UART协议
  2. 【正一专栏】读《江村经济》——献给妻子的书
  3. BPMF论文辅助笔记: 固定U,更新θU 部分推导
  4. python字符串中最长的连续升序子串_Leetcode刷题练Python无重复字符的最长子串
  5. 游标定位:Cursor类
  6. 解剖8051内核如何进行多任务切换
  7. Kubernetes-保障集群内节点和网络安全
  8. 深入理解javascript原型和闭包 1
  9. 华为解锁密码忘了怎么办用计算机,华为笔记本忘记密码怎么办(免费教你3种解密方法)...
  10. m3u8 TS 解密合并转码mp4,支持在线 ,UC、QQ等本地缓存
  11. 公共关系礼仪实务章节测试题——公共关系的类型(六)
  12. 阿里巴巴集团2015年秋季校招在线笔试附加题分析
  13. 在学习爬虫的路上,有多少坑在前边
  14. WORD锁定修订功能,记录别人更改你文件的步骤?
  15. ORA-01034: ORACLE not available Process ID: 0 Session ID: 0 Serial number: 0
  16. python字符串乱码问题
  17. 软考知识点---20标准化与法律法规
  18. CSS3实现实时时间数字滚动
  19. 勒索软件攻击为何越来越多?
  20. edge隐私错误“你的连接不是专用连接”解决方案

热门文章

  1. 【经典推荐】10部关于数学的顶级纪录片
  2. pytorch统计模型参数量
  3. 无纸化会议转型,做可持续发展企业
  4. jQuery API .append()
  5. Kong Rate Limiting 插件详解
  6. 两分钟理解RAFT光流中的相关层
  7. 小米5-root-记录
  8. 基于AM5728 DSP JTAG连接调试方法
  9. 方案已确定!北京高校,校本部外迁
  10. 越来越大的人使用计算机的原因,为什么越来越多的人喜欢用WPS这款电脑软件?这几点是关键原因...