Android中服务的开启和停止的方式以及各种情况下的存活状态

2024-06-15 13:32

本文主要是介绍Android中服务的开启和停止的方式以及各种情况下的存活状态,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

       服务是我们在Android开发中很常见的一个组件,号称那个啥?四大组建之一对吧,嘿嘿,没记错哈。今天小金子要说的不只是开启单一的开启服务和停止服务方法的使用,还要混合使用这几个方法,并且记录下来!

      1.如果开启服务?

              第一种:startService

              第二种:bindService

     2.如果停止服务?

              第一种:stopService(没有绑定服务的前提下)

              第二种:unbindService(在没有通过startService的启动服务前提下)

     当然了,上面我们知识列出了我们启动和停止服务的基本的方法,其实里面还有好多的奥秘,下面让我们来看看.


上面我在布局文件中弄了四个按钮,这里就不详细说了,每一个按钮会调用Activity中的一个方法

代码很简单,这里就不做说明了,就是四个按钮分别会执行不同的方法中的代码

有了这个当然还得有一个服务给我们玩呀

代码也很简单,这里就不做说明了

下面让我们开始实验:

1.先调用startService然后点击stopService


正常打印我们所想的字符串

2.先调用bindService然后点击unbindService


也是打印我们所想的字符串,这也没问题

3.先调用startService然后点击bindService然后再点击stopService


吓一跳,怎么不是我所想的最后会执行销毁的方法!原来Android中startService开启服务后再bindService绑定服务就不能通过stopService来停止服务.需要先调用unbindService再调用stopService来停止服务

4.先调用bindService然后点击startService然后再点击stopService


这里和上面是一样的结果,通过bindService启动服务的,之后只能靠unbindService来停止服务,并且只能调用一次,否则会挂掉,还有就是因为是绑定的,所以Activity退出的时候也会销毁这个服务


这里对上述做一个总结:

1.startService-->退出Activity                             服务存活

2.startService-->bindService-->退出Activity      服务存活,并且调用解除绑定方法

3.bindService-->退出Activity                             调用解除绑定方法,并销毁

4.bindService-->startService-->退出Activity      服务存活,并且调用解除绑定方法

ps:只要调用了startService,退出Activity就不会杀死服务,在没有绑定或者成功解除绑定后再去解除绑定就会发生异常,程序挂掉!而多次调用stopService没有问题

这篇关于Android中服务的开启和停止的方式以及各种情况下的存活状态的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/1063588

相关文章

Java异常捕获及处理方式详解

《Java异常捕获及处理方式详解》异常处理是Java编程中非常重要的一部分,它允许我们在程序运行时捕获并处理错误或不预期的行为,而不是让程序直接崩溃,本文将介绍Java中如何捕获异常,以及常用的异常处... 目录前言什么是异常?Java异常的基本语法解释:1. 捕获异常并处理示例1:捕获并处理单个异常解释:

C#控制台程序同步调用WebApi实现方式

《C#控制台程序同步调用WebApi实现方式》控制台程序作为Job时,需同步调用WebApi以确保获取返回结果后执行后续操作,否则会引发TaskCanceledException异常,同步处理可避免异... 目录同步调用WebApi方法Cls001类里面的写法总结控制台程序一般当作Job使用,有时候需要控制

Redis分布式锁中Redission底层实现方式

《Redis分布式锁中Redission底层实现方式》Redission基于Redis原子操作和Lua脚本实现分布式锁,通过SETNX命令、看门狗续期、可重入机制及异常处理,确保锁的可靠性和一致性,是... 目录Redis分布式锁中Redission底层实现一、Redission分布式锁的基本使用二、Red

基于Python实现数字限制在指定范围内的五种方式

《基于Python实现数字限制在指定范围内的五种方式》在编程中,数字范围限制是常见需求,无论是游戏开发中的角色属性值、金融计算中的利率调整,还是传感器数据处理中的异常值过滤,都需要将数字控制在合理范围... 目录引言一、基础条件判断法二、数学运算巧解法三、装饰器模式法四、自定义类封装法五、NumPy数组处理

Python中经纬度距离计算的实现方式

《Python中经纬度距离计算的实现方式》文章介绍Python中计算经纬度距离的方法及中国加密坐标系转换工具,主要方法包括geopy(Vincenty/Karney)、Haversine、pyproj... 目录一、基本方法1. 使用geopy库(推荐)2. 手动实现 Haversine 公式3. 使用py

MyBatis的xml中字符串类型判空与非字符串类型判空处理方式(最新整理)

《MyBatis的xml中字符串类型判空与非字符串类型判空处理方式(最新整理)》本文给大家介绍MyBatis的xml中字符串类型判空与非字符串类型判空处理方式,本文给大家介绍的非常详细,对大家的学习或... 目录完整 Hutool 写法版本对比优化为什么status变成Long?为什么 price 没事?怎

MyBatis流式查询两种实现方式

《MyBatis流式查询两种实现方式》本文详解MyBatis流式查询,通过ResultHandler和Cursor实现边读边处理,避免内存溢出,ResultHandler逐条回调,Cursor支持迭代... 目录MyBATis 流式查询详解:ResultHandler 与 Cursor1. 什么是流式查询?

Android 缓存日志Logcat导出与分析最佳实践

《Android缓存日志Logcat导出与分析最佳实践》本文全面介绍AndroidLogcat缓存日志的导出与分析方法,涵盖按进程、缓冲区类型及日志级别过滤,自动化工具使用,常见问题解决方案和最佳实... 目录android 缓存日志(Logcat)导出与分析全攻略为什么要导出缓存日志?按需过滤导出1. 按

解决若依微服务框架启动报错的问题

《解决若依微服务框架启动报错的问题》Invalidboundstatement错误通常由MyBatis映射文件未正确加载或Nacos配置未读取导致,需检查XML的namespace与方法ID是否匹配,... 目录ruoyi-system模块报错报错详情nacos文件目录总结ruoyi-systnGLNYpe

java实现多数据源切换方式

《java实现多数据源切换方式》本文介绍实现多数据源切换的四步方法:导入依赖、配置文件、启动类注解、使用@DS标记mapper和服务层,通过注解实现数据源动态切换,适用于实际开发中的多数据源场景... 目录一、导入依赖二、配置文件三、在启动类上配置四、在需要切换数据源的类上、方法上使用@DS注解结论一、导入