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

article/2025/10/1 8:01:56

综上两篇文章
1.Android Service的基本用法(startService启动方式生命周期)
2.Android Service与Activity之间的通信(bindService启动方式)

区别如下:
一.生命周期上的区别
startService启动服务:Service会经历onCreate()------->onStartCommand()。当执行stopService时,直接调用onDestroy方法。调用者如果没有stopService,Service会一直在后台运行,下次调用者再次启动仍然可以stopService。
多次调用startService,该Service只能被创建一次,即该Service的onCreate()只会被调用一次。但是每次调用startService,onStartCommand()都会被调用。
如图,运行日志:
在这里插入图片描述
bindService启动服务:Service会经历onCreate()----->onBind()。这个时候调用者和Service捆绑在一起。调用者调用unbindService方法或者调用者Context不存在了(如Activity被finish(销毁)了),Service就会调用onUnbind()------>onDestroy()。
第一次执行bindService时,onCreate()和onBind()会被调用,但是多次执行bindService时,onCreate()和onBind()方法并不会被多次调用(下图中的日志空白情况),即并不会多次创建服务和绑定服务。
如图,运行日志:
在这里插入图片描述
二.只有bindService启动服务才能获取绑定后的Service的方法,所以说具体的Service对象必须首先实现Binder(中间人)对象。
三.

  • startService在Activity所在进程被终结后,服务依然在运行。该服务是独立的进程,会占用一定资源—>缺点
  • bindService方便很多。缺点是主进程被终结后,服务便会终止

拓展
既使用startService又使用bindService的情况(同时使用),(想要启动一个后台服务长期进行某项任务又要与其保持通讯)
1.该Service会一直在后台运行。不管如何调用,onCreate()始终只会调用一次。
2.对应startService调用多少次,Service的onStart方法便会调用多少次。
3要终止Service,需要unbindService和stopService同时调用才行。与两者顺序无关。


http://chatgpt.dhexx.cn/article/HJ8MLKsG.shtml

相关文章

进程间通讯:Binder:bindService之 onServiceConnected回调

1:bindService官方概述 很明显 通过Google官方文档描述,我们知道 1:bindService()的返回值只是表明服务是否存在; 2:真正能代表是否成功绑定服务的是触发onServiceConnected(&…

Android入门第41天-Android中的Service(bindService)

介绍 在前一天我们介绍了Android中有两种启动Service的方法。并擅述了startService和bindService的区别。同时我们着重讲了startService。 因此今天我们就来讲bindService。bindService大家可以认为它是和Android的一个共生体。即这个service所属的activity如果消亡那么bindS…

Android Binder框架实现之bindService详解

Android Binder框架实现之bindService详解 Android Binder框架实现目录: Android Binder框架实现之Binder的设计思想 Android Binder框架实现之何为匿名/实名Binder Android Binder框架实现之Binder中的数据结构 Android Binder框架实现之Binder相关的接口和类 Andr…

Android bindService流程

一. 前言 我们可以通过startService来启动一个服务, 当然也可以通过bindService绑定一个服务,本篇文章我们来讲一讲绑定服务的完整流程, 阅读此文之前,建议先阅读一下笔者的这三篇文章 Android 进程间通信机制(三) 系统进程与应用进程通信 Android 进程间通信机制(四) 应用进程…

bind服务程序

一、介绍 1、bind服务是全球范围内使用最广泛、最安全可靠且高效的域名解析服务程序。 2、为了有效地限制bind服务程序仅能对自身的配置文件进行操作,以确保整个服务器的安全,在安装部署bind服务程序时加上chroot(俗称牢笼机制)…

startService bindService 区别

Android执行Service有两种方法,一种是startService,一种是bindService。下面让我们一起来聊一聊这两种执行Service方法的区别。 1、生命周期上的区别 执行startService时,Service会经历onCreate->onStartCommand。当执行stopService时&…

Android中Service使用bindService

前面已经对Service的startServer方式启动一个服务了解过了,现在来看一下Service的另一种启动方式→bindServer bindServer使用场景 1、在同个app之间调用(即是同一个进程中) 2、在不同app之间调用(即是跨进程间通信&#xff09…

Android——bindService()方法启动服务

通过绑定服务来启动的话需要注意创建一个类来实现ServiceConnection接口,重写onServiceConnected()和onServiceDisconnected()方法。这个类用于服务的连接。成功绑定服务时,会调用onServiceConnected&#…

Android Service 服务(三)—— bindService与remoteService

一、bindService简介 bindService是绑定Service服务,执行service服务中的逻辑流程。 service通过Context.startService()方法开始,通过Context.stopService()方法停止;也可以通过Service.stopSelf()方法或者Service.stopSelfResult()方法来停…

SO_BINDTODEVICE 使用

就绑定到了接口"lmi40"上,所有数据报的收发都只经过这个网卡. 对于SOL_BINDTODEVICE的总结如下: (1) 对于TCP套接口、UDP套接口、RAW套接口,可以通过SO_BINDTODEVICE套接口选项将套接口绑定到指定的网络接口上。绑定之后&…

startService与bindService的区别

Android执行Service有两种方法,一种是startService,一种是bindService。下面让我们一起来聊一聊这两种执行Service方法的区别。 1、生命周期上的区别 执行startService时,Service会经历onCreate->onStartCommand。当执行stopService时&…

startService和bindService的区别

首先看下其生命周期的区别: 生命周期: onCreate → startCommand → onDestroy onCreate → onBind→onUnBind→ onDestroy 静态绑定对应着startService;动态绑定对应着bindService,静态有自己独立的生命周期,动态会…

bindService的使用

bindService与starService之间的区别: 在程序通过startService()方法启动的服务,会长期在后台运行,并且启动服务的组件与服务之间没有关系,即使启动服务的组件被销毁,服务还是会运行。 但是当一…

Service学习以及BindService的使用

Service 什么是Service Service是一个可以在后台执行长时间操作而不使用用户界面的应用组件。 如何使用Service 我们首先需要实现一个Service的子类。主要实现Service的onCreat(),onStartCommand(),onB…

Android中bindService的使用及Service生命周期

Android中有两种主要方式使用Service,通过调用Context的startService方法或调用Context的bindService方法,本文只探讨纯bindService的使用,不涉及任何startService方法调用的情况。如果想了解startService相关的使用,请参见《Andr…

粒子群算法笔记

实质:在定义域随机放置多个变量,不断跳跃,同步寻找最优解。寻找方向受单个粒子与全部粒子的最优位置共同影响。单个粒子按照公式不断迭代寻找当新位置。多个变量聚集在某一点时,该点即是最优解。 控制其搜索速度(步长…

粒子群算法及C++实现

参考博客 https://www.cnblogs.com/alan666/p/8311804.html https://blog.csdn.net/weixin_39059031/article/details/103723843 https://blog.csdn.net/weixin_40679412/article/details/80571854 https://blog.csdn.net/daaikuaichuan/article/details/81382794 https://blo…

粒子群算法详解

一.产生背景 ❃粒子群算法(particleswarm optimization,PSO)由Kennedy和Eberhart在1995年提出,该算法对于Hepper的模拟鸟群(鱼群)的模型进行修正,以使粒子能够飞向解空间,并在最好解处降落,从而得到了粒子群优化算法。…

高铁列车粒子群算法及改进粒子群算法多目标单目标运行优化设计

问题介绍 根据表1、2、3 所列数据,以能耗、运行时间、舒适性为目标分别设计列车运行速度—距离曲线;完成单目标以及多目标优化下的列车运行对比;选择其中一种方案,设计列车速度跟踪控制算法并进行性能分析。 1 列车参数设置表优化…

智能优化算法之粒子群算法

1、粒子群优化算法概述 粒子群优化算法(PSO:Particle swarm optimization) 是一种进化计算技术(evolutionary computation)。源于对鸟群捕食的行为研究。粒子群优化算法的基本思想:是通过群体中个体之间的协作和信息共享来寻找最优…