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 Mail实现邮件服务功能示例

《Java中使用JavaMail实现邮件服务功能示例》:本文主要介绍Java中使用JavaMail实现邮件服务功能的相关资料,文章还提供了一个发送邮件的示例代码,包括创建参数类、邮件类和执行结... 目录前言一、历史背景二编程、pom依赖三、API说明(一)Session (会话)(二)Message编程客

Java中List转Map的几种具体实现方式和特点

《Java中List转Map的几种具体实现方式和特点》:本文主要介绍几种常用的List转Map的方式,包括使用for循环遍历、Java8StreamAPI、ApacheCommonsCollect... 目录前言1、使用for循环遍历:2、Java8 Stream API:3、Apache Commons

虚拟机与物理机的文件共享方式

《虚拟机与物理机的文件共享方式》文章介绍了如何在KaliLinux虚拟机中实现物理机文件夹的直接挂载,以便在虚拟机中方便地读取和使用物理机上的文件,通过设置和配置,可以实现临时挂载和永久挂载,并提供... 目录虚拟机与物理机的文件共享1 虚拟机设置2 验证Kali下分享文件夹功能是否启用3 创建挂载目录4

linux报错INFO:task xxxxxx:634 blocked for more than 120 seconds.三种解决方式

《linux报错INFO:taskxxxxxx:634blockedformorethan120seconds.三种解决方式》文章描述了一个Linux最小系统运行时出现的“hung_ta... 目录1.问题描述2.解决办法2.1 缩小文件系统缓存大小2.2 修改系统IO调度策略2.3 取消120秒时间限制3

Linux alias的三种使用场景方式

《Linuxalias的三种使用场景方式》文章介绍了Linux中`alias`命令的三种使用场景:临时别名、用户级别别名和系统级别别名,临时别名仅在当前终端有效,用户级别别名在当前用户下所有终端有效... 目录linux alias三种使用场景一次性适用于当前用户全局生效,所有用户都可调用删除总结Linux

windos server2022的配置故障转移服务的图文教程

《windosserver2022的配置故障转移服务的图文教程》本文主要介绍了windosserver2022的配置故障转移服务的图文教程,以确保服务和应用程序的连续性和可用性,文中通过图文介绍的非... 目录准备环境:步骤故障转移群集是 Windows Server 2022 中提供的一种功能,用于在多个

Mybatis官方生成器的使用方式

《Mybatis官方生成器的使用方式》本文详细介绍了MyBatisGenerator(MBG)的使用方法,通过实际代码示例展示了如何配置Maven插件来自动化生成MyBatis项目所需的实体类、Map... 目录1. MyBATis Generator 简介2. MyBatis Generator 的功能3

解决systemctl reload nginx重启Nginx服务报错:Job for nginx.service invalid问题

《解决systemctlreloadnginx重启Nginx服务报错:Jobfornginx.serviceinvalid问题》文章描述了通过`systemctlstatusnginx.se... 目录systemctl reload nginx重启Nginx服务报错:Job for nginx.javas

Python数据处理之导入导出Excel数据方式

《Python数据处理之导入导出Excel数据方式》Python是Excel数据处理的绝佳工具,通过Pandas和Openpyxl等库可以实现数据的导入、导出和自动化处理,从基础的数据读取和清洗到复杂... 目录python导入导出Excel数据开启数据之旅:为什么Python是Excel数据处理的最佳拍档

SpringBoot项目启动后自动加载系统配置的多种实现方式

《SpringBoot项目启动后自动加载系统配置的多种实现方式》:本文主要介绍SpringBoot项目启动后自动加载系统配置的多种实现方式,并通过代码示例讲解的非常详细,对大家的学习或工作有一定的... 目录1. 使用 CommandLineRunner实现方式:2. 使用 ApplicationRunne