Service的两种启动方式和区别?

Service启动流程总结-start和stop service 文章目录回顾概述源码探究startService过程onCreate阶段onStartCommand阶段Service超时机制设置超时移除超时触发超时当目标Service进程未启动时stopService过程总结 回顾 Activity启动系列总结: Activity启动流程总结-ActivityThread Activity启动流程总结-生命周期 Activity启动流程总结-超时判定机制 在Activity启动流程中对APP进程和ActivityManagerService的交互过程以及应用进程启动初始 阅读详情
第一种启动方式:startService(Intent)

启动服务 生命周期方法流程:onCreate --- > onStartCommand 

关闭服务:stopService(Intent)
关闭服务 生命周期方法流程 :onDestory

第二种启动方式:bindService(Intent , ServiceConnection , flag)

启动服务 生命周期方法流程:onCreate --- > onBind

关闭服务:stopService(Intent)
关闭服务 生命周期方法流程 :onUnBind ----> onDestory

区别:

startService启动Service ,Service有独立的生命周期,不依赖该组建;
多次调用startService方法,会重复调用onStartCommand方法;
必须通过stopService或者stopSelf来停止服务(IntentService会自动调用stopSelf方法)

bindService启动Service,多次调用此方法,只会调用一次onBind方法;
bindService,Service 依赖于此组件,该组件销毁后,Service也会随之销毁。

扩展:
1,同一个Service,先启动startService,然后在bindService,如何把服务停掉?

    无论被startService调用多少次,如需要stopService或者stopSelf方法 一次;
    调用n次bindService,必须调用n次unBindService方法;
因此,需要调用一次stopService(或者stopSelf)方法,和n次unBindService方法,执行顺序没有要求,
最后一个stopService或者unBindService方法会导致Service的 onDestory执行。

2,Service的生命方法是运行在那个线程中?

    Service默认运行在主线程,所以其生命方法也是运行在主线程中,如果需要在Service中进行耗时操作,必须另起线程(或者使用IntentService)否则会引起ANR。
语音数据标注工具与平台 最近在做语音深度学习的项目,整理了一下语音数据标注工具和语音标注平台,供大家参考 语音标注工具–Praat Praat是目前已经成为比较流行也比较专业的语音处理的软件,可以进行语音数据标注、语音录制、语音合成、语音分析等等,具有免费、占用空间小、通用性强、可移植性好等特点 官网链接 http://www.fon.hum.uva.nl/praat/ 汉化版下载 http://www.hejingzo... 阅读详情

相关推荐

解决用VScode写中文注释,Vivado打开之后是乱码的方法

这样就解决了中文注释乱码的问题,此外如果使用notepad++写verilog代码的话直接在notepad++上面将编码格式改为ANSI格式即可,更加方便快捷,所以此方法仅针对习惯用VScode写Verilog的同学,如果有其他好办法的话欢迎评论区补充。首先,VScode中的中文默认编码格式是UTF-8,然后Vivado的编码格式是vivado 默认的应该是ANSI编码格式,刚开始我先按照网上说明的,将VScode中的编码格式改为GBK格式(点击右下角->点击通过编码保存)。

weixin_50573305的博客 5810

service两种启动方式的区别

service,中文名称是服务,服务是Android中实现程序后台运行的解决方案,它非常适合去执行那些不需要和用户交互,而且还要长期运行的任务。 服务运行不依赖于任何用户界面,即使程序切换到后台,或者用户打开另一个应用程序,服务仍然能够保持正常运行。 不过需要注意的是,服务并不是运行在一个独立的进程当中的,而是依赖于创建服务时所在的应用程序进程。当某个应用程序进程被杀掉时,所以依赖于该进程的服...

LayneYao的博客 1万+

DLL导出函数名隐藏实战:三种方法保护代码安全

在Windows软件开发中,动态链接库(DLL)的导出函数名是模块间通信的关键标识,也是逆向工程的重要突破口。理解PE文件格式中的导出表结构是掌握DLL工作原理的基础,它记录了函数地址、名称和序号的映射关系。通过隐藏或混淆这些导出名称,可以有效增加代码分析的难度,提升软件的知识产权保护和安全性。这一技术在软件保护、游戏反作弊和安全组件中具有重要价值。本文聚焦DLL导出函数名隐藏,结合Dependencies工具分析,详细解析仅序号导出、导出转发器和运行时动态修改三种实用方案,为开发者提供从原理到实践的完整指

weixin_29315091的博客 307

(常面试的面试题)Service的两种启动方式的区别?

Service有两种启动方式,主要是startService和bindService。Service的生命周期方式onCreate,onStart,onDestroy。而这两种启动方式对Service声明周期的影响是不一样的。 1、startService方式启动服务,调用者与服务之间没有关联,即使调用者退出了,服务正常的运行,多次调用startService()方法并不会创建多个服务, 但是o

hmutang的博客 1220

模拟滤波器的基础知识和设计

使用Python实现多种模拟滤波器

faltas的博客 3529

深入解析MATLAB四旋翼仿真案例asbQuadcopter的核心模块与优化技巧

本文深入解析了MATLAB/Simulink中的四旋翼无人机官方案例asbQuadcopter,详细拆解了其指令、传感器、控制器、本体与环境等核心模块的工作原理。重点探讨了经典的PID双环控制结构、传感器噪声模拟、模型替换方法以及系统化的PID参数调优技巧,旨在帮助用户从“开箱即用”过渡到深度定制与优化,构建更精准的仿真模型。

weixin_29171087的博客 361

Android Service两种启动方式详解(总结版)

Service生命周期.png 第一种方式:通过StartService启动Service 通过startService启动后,service会一直无限期运行下去,只有外部调用了stopService()或stopSelf()方法时,该Service才会停止运行并销毁。 要创建一个这样的Service,你需要让该类继承Service类,然后重写以下方法: onCreate()

imxiangzi的专栏 11万+

AMEsim不连续处理机制:仿真精度与效率的平衡艺术

本文深入解析AMEsim不连续处理机制在系统仿真中的应用,探讨如何平衡仿真精度与效率。通过液压系统仿真案例,详细介绍了事件检测算法、变步长求解器自适应策略及典型场景优化方法,帮助工程师有效应对仿真中的不连续性问题,提升仿真效率和准确性。

v4w5x6的博客 440

Service 的两种启动方式以及实操

两种启动模式使用方式

奇奇怪怪的Android code的博客 4681

SAP ATP可用性检查简介

系统中建立此单时,SAP就会做一个所谓的检查,检查一下我们预先设定的考虑因素,能否满足客户的要求,什么时候可以满足,这就是可用性检查的功能。2、同样的在创建生产订单的时候也有ATP的检查,生产订单是100PC,要求2024-07-01生产完成,系统就会根据配置进行物料的可用性的检查,看物料是否能够满足生产同时能够满足交期。14: 表示相关预留的选项,与10的区别在于,10是一般是表示我们用MB21建立的,而14是表示由于相关预留,即此预留是来自于其他物料,如生产订单所产生的预留。

我小时候很黑的博客 3376

1. SAP Business Application Studio 里创建一个基于 CAP 模型的最简单的 OData 服务

本文基于 SAP Cloud Application Programming 编程模型的 OData 服务开发教程的第一步,简述了 SAP Business Technology Platform 里 Business Application Studio 开发工具的打开方式,创建 Dev Space 以及 CAP 项目的创建步骤,以及如何通过 schema.cds 和 service.cds 分别创建 OData 模型和 OData 服务,最后通过 ports preview 打开 OData 服务预览页

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1798

Service两种启动方式startService和bindService区别

总结 Service两种启动方式startService和bindService区别 1.两者启动的Service的生命周期不同 2.可以通过bindService会绑定到服务,然后利用返回的Binder去调用服务提供的方法. 参考 服务两种启动方式(startService与bindService)的区别 https://blog.youkuaiyun.com/qq_42761395/article/details/98496921 ...

ly969434341的专栏 732

Unity3D实现自定义河流路径或泥石流路径

此工具是一个插件,插件很好用,可以根据地形编辑河流的走向以及宽度,也可以发挥想象编辑成其他的效果,比如泥石流效果,岩浆效果,小溪,或者大江或者大河等等博客将会介绍可以编辑河流的工具的使用。希望这篇博客对Unity的开发者有所帮助。大家好,我是心疼你的一切,不定时更新Unity开发技巧,觉得有用记得一键三连哦。提示:以下是本篇文章正文内容,下面案例可供参考本次总结的就是工具的使用, 有需要会继续增加功能不定时更新Unity开发技巧,觉得有用记得一键三连哦。么么哒!

心疼你的一切博客 5265

Service的两种启动方式onstartService和onbindService区别

我们都知道,Service启动有两种方法,一种是onbindService(绑定),一种是onstartService(启动),那这两者究竟有什么不同呢?闲话:今天是我第一次写博客,第一次就这样献给csdn了,我不是大神,只是一个刚工作的实习生,写博客只是为了分享我以前遇到的问题和提高自己,以后我会保持每周最少一更,帮助更多新手解决难题,毕竟编程的最大的乐趣创造价值。 下面就不贴代码了,一小丢丢思路

健哥哥的博客 2962

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

service 的生命周期,两种启动方式的区别和混合调用相关

启动方式调用方法生命周期方法特点Service在后台无限期运行,直到被明确停止;调用者与Service之间无绑定关系onCreate()、onBind()、onUnbind()(可选)、onDestroy()Service与调用者绑定在一起,形成客户端-服务器关系;调用者销毁或解绑时,Service可能会停止(取决于是否还有其他startService()请求)了解这些差异有助于开发者根据应用的需求选择合适的Service启动方式,并有效地管理Service的生命周期。

meishuang2306的博客 873

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Android 中 Service 的两种启动方式startService和bindService的方式和区别

在Android中通常将比较耗时的操作或者需要在后台执行但不需要界面的操作放在Service中,比如:下载,播放音乐。。。 Service的生命周期: Service相比Activity来说就比较简单了:                                     onCreate()                                     onStart(

1881

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Android Service两种启动方式的区别

Android Service生命周期可以促使移动设备的创新,让用户体验到更优越的移动服务,只有broadcast receivers执行此方法才是激活的,当onReceiver()返回的时候,它就是非激活状态。 如果没有程序停止它或者它自己停止,service将一直运行。在这种模式下,service开始调用Context.startService(),停止于Context.stopServic...

dsd的博客 1905

Android 服务两种启动方式的区别

采用start的方式开启服务使用Service的步骤:使用这种start方式启动的Service的生命周期如下: --->(方法已过时) --->说明:如果服务已经开启,不会重复的执行, 而是会调用和。 服务停止的时候调用 。服务只会被停止一次。特点:一旦服务开启跟调用者(开启者)就没有任何关系了。 开启者退出了,开启者挂了,服务还在后台长期的运行。 开启者不能调用服务里面的方法。采用bind的方式开启服务使用Service的步骤:使用这种start方式启动的Service的生命周期如下: --->---

apple_51426592的博客 1124

服务两种启动方式(startService与bindService)的区别

综上两篇文章 1.Android Service的基本用法(startService启动方式生命周期) 2.Android Service与Activity之间的通信(bindService启动方式) 区别如下: 一.生命周期上的区别 startService启动服务:Service会经历onCreate()------->onStartCommand()。当执行stopService时,直...

计蒙不吃鱼的博客 2万+

Android Service两种启动方式

1.Context.startService()方式启动  ①Context.startService()方式的生命周期: 启动时,startService –> onCreate() –> onStart()停止时,stopService –> onDestroy()如果调用者直接退出而没有停止Service,则Service 会一直在后台运行 Context.startService()方法

dada360778512的专栏 8万+

Service生命周期和启动方式

Service生命周期和启动方式一.Service介绍二.两种状态三.创建方式1.自定义类继承Service实现类中onCreate(),onBind()方法2.清单文件中注册四.启动方式1.startService2.bindService效果具体代码三.两者区别 一.Service介绍 Service也是Android的四大组件之一,单词本身的含义“服务”。就像我们计算机中的服务器一样,没有界面默默运行在后台。所以在Android中它是一个后台运行的组件,主要去执行一些耗时操作,或者是执行一些特定操作。

amynn的博客 851

Service的两种启动方式及其之间的区别

作为Android四大组价之一的Service,可以在很多场合中进行应用。比如当在播放音频的时候用户启动了其他Activity,这个时候程序要在后台继续播放,比如检测SD卡上文件的变化,或者在后台记录用户地理位置信息的变化等等。开启Service主要有两种方式。 (1)startService();此种开启方式Service会经历onCreate()--onStart()。若Service还没运

siwen1234的博客 8955

Android开发中的Service的两种启动方式的坑

和大家熟悉的Activity组件一样,service也是Android应用开程序发中常用的组件,它和acitivy一样也有自己的生命周期,不同的是service是运行在后台的,没有同用户直接交互的界面。  service的是有两种启动方式: 第一种是通过startservice方式来启动,通过此方式来启动的service会一直运行在后台,除非调用者主动停止服务或者是系统异常杀死。 此过程对应的...

EugeneYoung的博客 4720

Day14 Service生命周期和启动方式

Service生命周期和启动方式介绍Service的启动方式如何创建Service启动方式1(startService)启动方式2(bindService)效果前台服务Foreground Service (就是一个广播)代码展示效果展示案列代码展示效果 介绍 1、Service,服务,是四大组件之一, 和Activity 非常相似, 一般运行在后台, 没有用户界面, 可执行的程序 2、Activ...

huang_one_jun的博客 541
上一篇: Parcelable与Serializable都能实现序列化并且都可用于Intent间的传递数据传递,那么两者该如何取舍?
下一篇: 对Binder的理解?
Henson_Ding
博客等级 码龄11年 22粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值