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

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

相关文章

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

TP-Link PDDNS服将于务6月30日正式停运:用户需转向第三方DDNS服务

《TP-LinkPDDNS服将于务6月30日正式停运:用户需转向第三方DDNS服务》近期,路由器制造巨头普联(TP-Link)在用户群体中引发了一系列重要变动,上个月,公司发出了一则通知,明确要求所... 路由器厂商普联(TP-Link)上个月发布公告要求所有用户必须完成实名认证后才能继续使用普联提供的 D

基于Python开发PPTX压缩工具

《基于Python开发PPTX压缩工具》在日常办公中,PPT文件往往因为图片过大而导致文件体积过大,不便于传输和存储,所以本文将使用Python开发一个PPTX压缩工具,需要的可以了解下... 目录引言全部代码环境准备代码结构代码实现运行结果引言在日常办公中,PPT文件往往因为图片过大而导致文件体积过大,

微服务架构之使用RabbitMQ进行异步处理方式

《微服务架构之使用RabbitMQ进行异步处理方式》本文介绍了RabbitMQ的基本概念、异步调用处理逻辑、RabbitMQ的基本使用方法以及在SpringBoot项目中使用RabbitMQ解决高并发... 目录一.什么是RabbitMQ?二.异步调用处理逻辑:三.RabbitMQ的基本使用1.安装2.架构

5分钟获取deepseek api并搭建简易问答应用

《5分钟获取deepseekapi并搭建简易问答应用》本文主要介绍了5分钟获取deepseekapi并搭建简易问答应用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需... 目录1、获取api2、获取base_url和chat_model3、配置模型参数方法一:终端中临时将加

使用DeepSeek API 结合VSCode提升开发效率

《使用DeepSeekAPI结合VSCode提升开发效率》:本文主要介绍DeepSeekAPI与VisualStudioCode(VSCode)结合使用,以提升软件开发效率,具有一定的参考价值... 目录引言准备工作安装必要的 VSCode 扩展配置 DeepSeek API1. 创建 API 请求文件2.

Java中使用Java Mail实现邮件服务功能示例

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

JavaScript中的isTrusted属性及其应用场景详解

《JavaScript中的isTrusted属性及其应用场景详解》在现代Web开发中,JavaScript是构建交互式应用的核心语言,随着前端技术的不断发展,开发者需要处理越来越多的复杂场景,例如事件... 目录引言一、问题背景二、isTrusted 属性的来源与作用1. isTrusted 的定义2. 为

Python调用另一个py文件并传递参数常见的方法及其应用场景

《Python调用另一个py文件并传递参数常见的方法及其应用场景》:本文主要介绍在Python中调用另一个py文件并传递参数的几种常见方法,包括使用import语句、exec函数、subproce... 目录前言1. 使用import语句1.1 基本用法1.2 导入特定函数1.3 处理文件路径2. 使用ex

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

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