iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >Android 启动 Service(startservice和bindservice) 两种方式的区别
  • 143
分享到

Android 启动 Service(startservice和bindservice) 两种方式的区别

service启动Android 2022-06-06 09:06:26 143人浏览 八月长安
摘要

Android Service 生命周期可以促使移动设备的创新,让用户体验到最优越的移动服务,只有broadcast receivers执行此方法的时候才是激活的,当 onRe

Android Service 生命周期可以促使移动设备的创新,让用户体验到最优越的移动服务,只有broadcast receivers执行此方法的时候才是激活的,当 onReceive()返回的时候,它就是非激活状态。

如果没有程序停止它或者它自己停止,service将一直运行。在这种模式下,service开始于调用Context.startService() ,停止于Context.stopService(). service可以通过调用Android Service 生命周期() 或 Service.stopSelfResult()停止自己。不管调用多少次startService() ,只需要调用一次 stopService() 就可以停止service。

可以通过接口被外部程序调用。外部程序建立到service的连接,通过连接来操作service。建立连接调开始于Context.bindService(), 结束于Context.unbindService(). 多个客户端可以绑定到同一个service,如果service没有启动, bindService() 可以选择启动它。

服务不能自己运行,需要通过调用Context.startService()或Context.bindService()方法启动服务。这两个方法都 可以启动Service,但是它们的使用场合有所不同。使用startService()方法启用服务,调用者与服务之间没有关连,即使调用者退出了,服 务仍然运行。使用bindService()方法启用服务,调用者与服务绑定在了一起,调用者一旦退出,服务也就终止,大有“不求同时生,必须同时死”的 特点。

如果打算采用Context.startService()方法启动服务,在服务未被创建时,系统会先调用服务的onCreate()方法,接着调用onStart()方法。如果调用startService()方法前服务已经被创建,多次调用startService()方法并不会导致多次创建服务,但会导致多次调用onStart()方法。采用startService()方法启动的服务,只能调用Context.stopService()方法结束服务,服务结束时会调用onDestroy()方法。

如果打算采用Context.bindService()方法启动服务,在服务未被创建时,系统会先调用服务的 onCreate()方法,接着调用onBind()方法。这个时候调用者和服务绑定在一起,调用者退出了,系统就会先调用服务的onUnbind()方 法,接着调用onDestroy()方法。如果调用bindService()方法前服务已经被绑定,多次调用bindService()方法并不会导致 多次创建服务及绑定(也就是说onCreate()和onBind()方法并不会被多次调用)。如果调用者希望与正在绑定的服务解除绑定,可以调用 unbindService()方法,调用该方法也会导致系统调用服务的onUnbind()-->onDestroy()方法。

总结:Service 的两种启动方法和区别

Service的生命周期方法onCreate, onStart, onDestroy

有两种方式启动一个Service,他们对Service生命周期的影响是不一样的。

1 通过startService

  Service会经历 onCreate -> onStart

 stopService的时候直接onDestroy

如果是调用者自己直接退出而没有调用stopService的话,Service会一直在后台运行。下次调用者再起来可以stopService。

2 通过bindService

  Service只会运行onCreate, 这个时候服务的调用者和服务绑定在一起

调用者退出了,Srevice就会调用onUnbind->onDestroyed所谓绑定在一起就共存亡了。并且这种方式还可以使得
调用方(例如)调用服务上的其他的方法。

您可能感兴趣的文章:Android中bindService基本使用方法概述Android bindservice失败解决方法


--结束END--

本文标题: Android 启动 Service(startservice和bindservice) 两种方式的区别

本文链接: https://www.lsjlt.com/news/26365.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android 两种启动模式的实例详解
    Android 两种启动模式的实例详解Intent的FLAG_ACTIVITY_CLEAR_TOP和FLAG_ACTIVITY_REORDER_TO_FRONTActivity的两种启动模式:FLAG_ACTIVITY_CLEAR_TOP和...
    99+
    2023-05-30
    android 启动模式 roi
  • Svn服务启动的两种方式
    有两种方式可以启动SVN服务:1. 通过命令行启动:使用命令行工具进入SVN的安装目录,然后执行相应的命令来启动SVN服务。具体的命...
    99+
    2023-09-20
    Svn
  • Android Studio 显示gif动图的两种方式
    方法一: 1、gif图片: 将所需的.gif图片复制到drawable文件夹下,如下图所示。 2、布局文件: 在布局文件添加ImageView代码段,如下所示。 3、逻辑代码: 在MainActi...
    99+
    2023-10-11
    android android studio
  • ONLINE DDL INPLACE和COPY两种方式MDL锁的区别有哪些
    小编给大家分享一下ONLINE DDL INPLACE和COPY两种方式MDL锁的区别有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了...
    99+
    2024-04-02
  • C++中两种字符串定义方式和区别介绍
    目录前言概念定义方式计算机的存储方式总结前言 在学习字符串这方面的内容时,发现字符串定义的两种方式虽然内容相同但还是有细微的区别 概念 字符串就是一串用双引号连接起来的字符串字面值,...
    99+
    2024-04-02
  • 云服务器的种类包括什么和什么两种方式的区别
    云服务器可以分为以下几种类型: 私有云:私有云是指客户将数据托管在一个第三方的物理服务器上,以保护其隐私和机密性。这种模式的优势在于可以提供更好的灵活性,因为可以根据需要扩展服务器和增加虚拟机等服务。但是,这种模式需要客户承担一定的硬件...
    99+
    2023-10-27
    两种 种类 区别
  • redis两种持久化方式的区别有哪些
    这篇文章主要介绍redis两种持久化方式的区别有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! redis提供两种方式进行持久化,一种是RDB持久化(原理是将Reids...
    99+
    2024-04-02
  • Mybatis两种不同批量插入方式的区别
    目录前言 测试 拼接 sql batch插入 数据对比总结前言 本文使用 Mybatis 进行批量插入,比较两种不同的插入方式的区别。 测试 批量插入注意事项: 1、连接数据库时...
    99+
    2024-04-02
  • redis的三种启动方式分别是什么
    小编给大家分享一下redis的三种启动方式分别是什么,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!redis有三种启动方式,分别是:直接启动、使用redis启动脚本设置开机自启动、通过指定...
    99+
    2024-04-02
  • 两种方法删除Vista下旧式的启动项目
    在Vista下删除旧式的启动项目,可以使用以下两种方法:1. 使用系统配置工具:- 点击“开始”按钮,输入“msconfig”并按下...
    99+
    2023-09-22
    Vista
  • Java连接服务器的两种方式SFTP和FTP有什么区别
    这篇文章主要介绍了Java连接服务器的两种方式SFTP和FTP有什么区别的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java连接服务器的两种方式SFTP和FTP有什么区别文章都会有所收获,下面我们一起来看看吧...
    99+
    2023-07-05
  • Go的两种声明变量的方式有什么区别
    一、变量作用域不同 使用var关键字声明变量时,变量的作用域可以是全局的或者局部的,而使用:=运算符声明变量时,变量的作用域只能是局部的。这是因为:=运算符是一种简化语法,在函数内部使用。 例如: 在上面的代码中,变量name使用va...
    99+
    2023-10-29
    两种 变量 有什么区别
  • Android解析JSON格式数据的两种方式(JSONObject和Gson)
    目录Json数据JSONObjectGSON添加依赖实际操作实体类总结Json数据 接下来主要学习在Android中使用两种解析方式:JSONObject和Gson。 JSONObj...
    99+
    2024-04-02
  • Spring Boot 项目启动自动执行方法的两种实现方式
    目录实际应用场景:第一种实现ApplicationRunner接口第二种实现CommandLineRunner接口对比:注意:实际应用场景: springboot项目启动成功后执行一...
    99+
    2024-04-02
  • MySQL自动填充create_time和update_time的两种方式
    目录1、脚本方式2、工具方式总结1、脚本方式 createTime只需要把类型设定为timestamp,默认值为current_timestamp即可,updateTime比crea...
    99+
    2024-04-02
  • Android实现旋转动画的两种方式案例详解
    目录练习案例效果展示前期准备自定义 View java代码编写方法一方法二易错点总结:练习案例 视差动画 - 雅虎新闻摘要加载 效果展示 前期准备 第一步:准备好颜色数组 res ...
    99+
    2024-04-02
  • 云服务器的种类包括什么和什么两种模式的区别
    云服务器(Cloud Storage)是指一种提供高可靠性、高可用性和低成本的数据存储和处理服务的服务器系统。这些服务可以包括Web应用服务器、数据库服务器、负载均衡、备份和恢复服务等。 云服务器的种类包括以下几种: Amazon We...
    99+
    2023-10-27
    两种 种类 区别
  • GET和POST两种基本请求方法的区别有哪些
    本篇内容主要讲解“GET和POST两种基本请求方法的区别有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“GET和POST两种基本请求方法的区别有哪些”吧!G...
    99+
    2024-04-02
  • java Long类型转为String类型的两种方式及区别说明
    目录java Long类型转为String类型1、Long.ValueOf("String")返回Long包装类型数据2、Long.parseLong("String")返回long...
    99+
    2024-04-02
  • SpringBoot 在项目启动之后执行自定义方法的两种方式小结
    目录SpringBoot 项目启动之后执行自定义方法的两种方式方式一 实现 CommandLineRunner 接口方式二 实现 ApplicationRunner 接口二者区别Sp...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作