移动应用开发-第九章服务

2024-06-20 21:44

本文主要是介绍移动应用开发-第九章服务,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

服务是一个长期运行在后台的用户组件,没有用户界面。除了可以在后台下载文件之外,还可以在后台执行很多任务。

9.1服务概述

可以与其他组件进行交互,一般是由Activity启动,但并不依赖于Activity。它有自己的生命周期。

具有较长的时间运行特性,主要有后台运行与跨进程访问两个应用场景。

①后台运行:可以在后台长时间进行操作而不用提供界面信息,只有当系统必须要回收内存资源时,才会被销毁,否则Service会一直在后台运行。

②跨进程访问:当Service被其他应用组件启动时,即使用户切换到其他应用,服务仍将在后台继续运行。其运行是在主线程中进行的。

9.2服务的创建

<service>标签中有3个属性,分别是name,enabled,exported,其中name属性表示服务的路径,enabled属性表示系统是否能够实例化该服务,exported属性表示该服务是否能够被其他应用程序中的组件调用或进行交互。

9.3服务的生命周期

服务的启动方式有两种:一种是通过startService()方法启动服务,另一种是通过bindService()方法启动服务。使用不同的方式启动服务,其生命周期会不同

①当调用startService()方法启动服务时,程序执行服务的生命周期方法依次为onCreate(),onStartCommand(),onDestroy()。

②当通过bindService()方法启动服务时,执行的生命周期方法依次为onCreate(),onBind(),onUnbind(),onDestroy()。

两种启动服务的方法:

①startService():启动服务

②bindService():启动服务后可以进行有限交互。

onCreate():第一次创建服务时执行的方法

onStartCommand():调用startService()方法启动服务时执行的方法。

onBind():调用bindService()方法启动服务时执行的方法。

onUnbind():调用unBindService()方法断开服务绑定时执行的方法。

onDestory():服务被销毁时执行的方法。

 

9.4服务的启动方式

1,调用startService()方法启动服务。

2,调用bindService()方法启动服务

9.5服务的通信

通过bindService()方法开启服务后,服务与绑定服务的组件是可以通信的,通过组件可以控制服务并进行一些操作。

1,本地服务通信和远程服务通信

本地服务通信是指应用程序内部的通信。远程服务通信是指两个应用程序之间的通信。

①本地服务通信:首先需要创建一个Service类,该类会提供一个onBind()方法,onBind()方法的返回值是一个lBinder对象,lBinder对象会作为参数传递给ServiceConnection类中的onServiceConnected(ComponentName name,IBinder service)方法。这样访问者就可以通过lBinder对象与service进行通信。

②远程服务通信:完成不同进程之间的通信。它是通过AIDL实现的。

AIDL语言:AIDL定义接口的源代码必须以.aidl结尾。AIDL接口中用到的数据类型,除了基本数据类型String,List,Map,CharSequence之外,其他类型全部都需要导入包,即使它们在同一个包中。

 

 

这篇关于移动应用开发-第九章服务的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1079336

相关文章

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

Android Kotlin 高阶函数详解及其在协程中的应用小结

《AndroidKotlin高阶函数详解及其在协程中的应用小结》高阶函数是Kotlin中的一个重要特性,它能够将函数作为一等公民(First-ClassCitizen),使得代码更加简洁、灵活和可... 目录1. 引言2. 什么是高阶函数?3. 高阶函数的基础用法3.1 传递函数作为参数3.2 Lambda

Linux上设置Ollama服务配置(常用环境变量)

《Linux上设置Ollama服务配置(常用环境变量)》本文主要介绍了Linux上设置Ollama服务配置(常用环境变量),Ollama提供了多种环境变量供配置,如调试模式、模型目录等,下面就来介绍一... 目录在 linux 上设置环境变量配置 OllamPOgxSRJfa手动安装安装特定版本查看日志在

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

Java中&和&&以及|和||的区别、应用场景和代码示例

《Java中&和&&以及|和||的区别、应用场景和代码示例》:本文主要介绍Java中的逻辑运算符&、&&、|和||的区别,包括它们在布尔和整数类型上的应用,文中通过代码介绍的非常详细,需要的朋友可... 目录前言1. & 和 &&代码示例2. | 和 ||代码示例3. 为什么要使用 & 和 | 而不是总是使

SpringCloud之LoadBalancer负载均衡服务调用过程

《SpringCloud之LoadBalancer负载均衡服务调用过程》:本文主要介绍SpringCloud之LoadBalancer负载均衡服务调用过程,具有很好的参考价值,希望对大家有所帮助,... 目录前言一、LoadBalancer是什么?二、使用步骤1、启动consul2、客户端加入依赖3、以服务