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

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情
第一种启动方式: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。
Service启动流程总结-startstop service 文章目录回顾概述源码探究startService过程onCreate阶段onStartCommand阶段Service超时机制设置超时移除超时触发超时当目标Service进程未启动时stopService过程总结 回顾 Activity启动系列总结: Activity启动流程总结-ActivityThread Activity启动流程总结-生命周期 Activity启动流程总结-超时判定机制 在Activity启动流程中对APP进程ActivityManagerService的交互过程以及应用进程启动初始 阅读详情

相关推荐

service两种启动方式区别

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

LayneYao的博客 1万+

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

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

imxiangzi的专栏 11万+

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

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

hmutang的博客 1216

Service两种启动方式以及实操

两种启动模式使用方式

奇奇怪怪的Android code的博客 4672

Service两种启动方式startServicebindService区别

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

ly969434341的专栏 732

Service两种启动方式onstartServiceonbindService区别

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

健哥哥的博客 2958

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

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

meishuang2306的博客 872

Android 中 Service两种启动方式startServicebindService的方式区别

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

1877

Android Service两种启动方式区别

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

dsd的博客 1902

Android 服务两种启动方式区别

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

apple_51426592的博客 1122

Android Service两种启动方式

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

dada360778512的专栏 8万+

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

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

计蒙不吃鱼的博客 2万+

Service生命周期启动方式

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

amynn的博客 848

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

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

siwen1234的博客 8952

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

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

EugeneYoung的博客 4715

Day14 Service生命周期启动方式

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

huang_one_jun的博客 539
上一篇: 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、付费专栏及课程。

余额充值