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

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

相关文章

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

使用Python开发一个现代化屏幕取色器

《使用Python开发一个现代化屏幕取色器》在UI设计、网页开发等场景中,颜色拾取是高频需求,:本文主要介绍如何使用Python开发一个现代化屏幕取色器,有需要的小伙伴可以参考一下... 目录一、项目概述二、核心功能解析2.1 实时颜色追踪2.2 智能颜色显示三、效果展示四、实现步骤详解4.1 环境配置4.

SpringBoot服务获取Pod当前IP的两种方案

《SpringBoot服务获取Pod当前IP的两种方案》在Kubernetes集群中,SpringBoot服务获取Pod当前IP的方案主要有两种,通过环境变量注入或通过Java代码动态获取网络接口IP... 目录方案一:通过 Kubernetes Downward API 注入环境变量原理步骤方案二:通过

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件

如何搭建并配置HTTPD文件服务及访问权限控制

《如何搭建并配置HTTPD文件服务及访问权限控制》:本文主要介绍如何搭建并配置HTTPD文件服务及访问权限控制的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、安装HTTPD服务二、HTTPD服务目录结构三、配置修改四、服务启动五、基于用户访问权限控制六、

Python使用Tkinter打造一个完整的桌面应用

《Python使用Tkinter打造一个完整的桌面应用》在Python生态中,Tkinter就像一把瑞士军刀,它没有花哨的特效,却能快速搭建出实用的图形界面,作为Python自带的标准库,无需安装即可... 目录一、界面搭建:像搭积木一样组合控件二、菜单系统:给应用装上“控制中枢”三、事件驱动:让界面“活”

基于Python开发一个有趣的工作时长计算器

《基于Python开发一个有趣的工作时长计算器》随着远程办公和弹性工作制的兴起,个人及团队对于工作时长的准确统计需求日益增长,本文将使用Python和PyQt5打造一个工作时长计算器,感兴趣的小伙伴可... 目录概述功能介绍界面展示php软件使用步骤说明代码详解1.窗口初始化与布局2.工作时长计算核心逻辑3

如何确定哪些软件是Mac系统自带的? Mac系统内置应用查看技巧

《如何确定哪些软件是Mac系统自带的?Mac系统内置应用查看技巧》如何确定哪些软件是Mac系统自带的?mac系统中有很多自带的应用,想要看看哪些是系统自带,该怎么查看呢?下面我们就来看看Mac系统内... 在MAC电脑上,可以使用以下方法来确定哪些软件是系统自带的:1.应用程序文件夹打开应用程序文件夹

python web 开发之Flask中间件与请求处理钩子的最佳实践

《pythonweb开发之Flask中间件与请求处理钩子的最佳实践》Flask作为轻量级Web框架,提供了灵活的请求处理机制,中间件和请求钩子允许开发者在请求处理的不同阶段插入自定义逻辑,实现诸如... 目录Flask中间件与请求处理钩子完全指南1. 引言2. 请求处理生命周期概述3. 请求钩子详解3.1

如何基于Python开发一个微信自动化工具

《如何基于Python开发一个微信自动化工具》在当今数字化办公场景中,自动化工具已成为提升工作效率的利器,本文将深入剖析一个基于Python的微信自动化工具开发全过程,有需要的小伙伴可以了解下... 目录概述功能全景1. 核心功能模块2. 特色功能效果展示1. 主界面概览2. 定时任务配置3. 操作日志演示