当前课程知识点:Android应用开发基础 >  第六章 Android服务 >  6.3 自定义服务 >  6.3 自定义服务

返回《Android应用开发基础》慕课在线视频课程列表

6.3 自定义服务在线视频

下一节:6.3.1 实践案例-启动服务

返回《Android应用开发基础》慕课在线视频列表

6.3 自定义服务课程教案、知识点、字幕

本节我们介绍如何使用自定义服务

在上一讲我们详细介绍了系统服务

如图所示

Android系统为了

降低系统服务的编程难度

研发了大量Manager组件

这些独立的管理组件

可以简化访问系统服务的难度

自定义的服务跟Activity的级别差不多

但不能自己运行 只能后台运行

研发人员根据不同的需要

自行开发的服务

可以和其他组件进行交互

service可以在很多场合的应用中使用

比如播放多媒体的时候

用户启动了其他Activity

这个时候程序要在后台继续播放

还有比如检测SD卡上文件的变化

还有在后台

记录你地理信息位置的改变等等

服务总是藏在后台的

往往与活动组件等其他组件

保存在同一个应用程序中

service生命周期

没有activity生命周期那么复杂

如图所示

Service的启动有两种方式

context.startService ()

和context.bindService ()

首先我们介绍startService ()

同一应用在任意地方

调用startService ()方法

都能启动Service

然后系统会自动调用

onCreate () onStartCommand ()方法

这样启动的Service会一直运行在后台

直到stopService ()方法被调用

另外如果一个Service已经被启动

其他代码再想调用startService ()方法

则不会执行onCreate ()

但会重新执行一次onStartCommand ()

下面我们以一个实例

来学习service生命周期的函数调用关系 ()

1 新建一个继承于Service的类

代码如图所示

1.1 依次下列重载实现方法

onCreate () onStartCommand ()

1.2 依次在上述的重载函数使用Log

进行标签的标记

2 实现服务的开启和关闭

2.1 使用startService startIntent开启服务

2.2 使用stopService stopIntent关闭服务

2.3 在Xml配置信息文件中

注册MyService服务

如图所示

是使用startService

开启服务的生命周期展示效果图

3 第一次点击启动服务

系统会自动调用

onCreate () onStartCommand ()方法

第二次点击启动服务

则不会执行 onCreate ()

但会重新执行一次onStartCommand ()

点击关闭服务

系统会调用onDestroy ()方法

下面我们介绍绑定服务bindService ()

使用bindService ()方法启动时

系统会自动调用onCreate () onBind ()

service会和客户端绑定起来

客户端停止

则service也会停止

绑定服务中onBind ()

将返回给客户端一个IBind接口实例

IBind允许客户端回调服务的方法

比如得到Service的实例

运行状态或其他操作

这个时候调用者 例如Activity

会和Service绑定在一起

Activity退出了

Service就会调用

onUnbind->onDestroy依次退出

下面是下载应用程序的具体实例

主Activity视图绑定Service

如图所示

1 服务启动了一个下载功能

下载功能模块包括

开始下载和获取下载进度两个功能

2 Activity如果用startService启动服务

Activity不能获取下载的进度

和开启下载这两个功能

3 Activity使用bindService绑定服务

Activity通过onBind

获取了下载功能的实例对象

可以使用服务中的下载功能接口

获取下载进度

下面我们看一下具体的实现过程

1 新建一个继承于Binder的类

DownloadBinder

依次实现startDownload

和getProgress这两个接口

2 MyService中

新建一个DownLoadBinder对象

onBind接口中返回DownLoadBinder对象

3 Acvitivity定义ServiceConnection类

和DownLoadBinder对象并初始化

ServiceConnection对象的初始化

必须实现onServiceDisconnected回调方法

和onServiceConnected

绑定服务成功后

服务通过这个回调方法

将服务MyService中的DownloadBinder对象

通过IBinder service对象传回

Activity中的mDownloadBinder对象

就可以调用服务中的下载功能接口

4 Activity中绑定MyService服务

代码如图所示

4.1 新建一个服务意图

4.2 通过bindService将Activity与服务绑定

5 Activity中调用Myservice服务中的

下载和获取进度功能

如图所示

我们看一下实现的效果

点击绑定服务后

系统会自动调用

onCreate () onBind ()两个方法

点击下载和获取进度

调用了下载功能中的

startDownload和getProgress两个接口

根据Log的日志

我们可以看到

视图和服务都处于同一个线程

这就是我们自定义服务的全部内容

Android应用开发基础课程列表:

课程教案

-1 Android应用开发基础-课程标准

-2 Android应用开发基础-教案

第一章 Android概述

-讨论:Android应用开发基础资源下载地址

-讨论的问题:华为“鸿蒙系统”会取代安卓吗?

-Android Studio4.1.2安装常用问题汇总2021.3.15

-1.1 Android概述

--1.1 Android概述

--1.1 Android Studio安装与配置-实践案例

-1.1 Android概述--作业

-1.2 Android程序

--1.2 Android程序

--1.2 第一个Android应用程序-实践案例

-1.2 Android程序--作业

-1.3 Android程序调试

--1.3 Android程序调试

--1.3 Android程序调试-实践案例

-1.3 Android程序调试--作业

-讨论-完成第一个Android程序需要多长时间?

第二章 Android视图

-讨论-什么是Activity?

-2.1 Activity概述

--2.1 Activity概述

--2.1.1 实践案例-Activity生命周期

--2.1.2 实践案例-Activity跳转和数据传递

-2.1 Activity概述--作业

-2.2 Activity应用

--2.2 Activity应用

--2.2 实践案例-Activity四种启动模式

-第2章 Android视图--2.2 Activity应用

-讨论-怎么理解常用的四种启动模式?

第三章 Android组件

-讨论:Android在五个常用布局外还有哪几种布局方式?

-3.1 Activity布局

--3.1 Activity布局

--3.1 实践案例-Android布局

-3.1 Activity布局--作业

-3.2 Android基础组件

--3.2 Android基础组件

--3.2.1 实践案例-文本和按钮组件

--3.2.2 实践案例-编辑框和进度条组件

-3.2 Android基础组件--作业

-3.3 Android中级组件

--3.3 Android中级组件

--3.3.1 实践案例-复选框和开关组件

--3.3.2 实践案例-单选框和图像组件

-3.3 Android中级组件--作业

-3.4 Android适配器

--3.4.1 系统适配器

--3.4.2 自定义适配器

--3.4.1实践案例-系统适配器

--3.4.2 实践案例-自定义适配器

-3.4 Android适配器--作业

-讨论-如何解决Android的布局嵌套问题的?

第四章 Android Fragment

-讨论:Fragment的优点?

-4.1 Fragment碎片组件

--4.1.1 Fragment静态加载

--4.1.2 Fragment与Activity通讯

--4.1.3 Fragment动态加载

--4.1.1 实践案例-Fragment静态加载

--4.1.2 实践案例-Fragment的动态加载

-4.1 Fragment碎片组件--作业

-4.2 ViewPager翻页类组件

--4.2.1 ViewPager翻页类组件

--4.2.2 引导页和标题栏

--4.2 实践案例-引导页和选项卡

-4.2 ViewPager翻页类组件--作业

-讨论:fragment与activity的生命周期有哪些不同?

第五章 广播

-讨论:Android广播有什么作用?

-5.1 Android广播概述

--5.1 Android广播概述

--5.1.1 实践案例-手机电量显示

--5.1.2 实践案例-手机充电状态显示

-5.1 Android广播概述--作业

-5.2 Android广播工作原理

--5.2 Android广播工作原理

--5.2.1 实践案例-手机网络状态显示

--5.2.2 实践案例-短消息接收

-5.2 Android广播工作原理--作业

-5.3 自定义广播

--5.3 自定义广播

--5.3 实践案例-自定义广播与有序广播

-第5章 广播--5.3 自定义广播

-5.4 有序广播

--5.4有序广播

--5.4.2 实践案例-登录广播-记住密码

--5.4.2 实践案例-登录广播-强制退出

-第5章 广播--5.4 有序广播

-讨论:广播的动态注册和静态注册有什么区别?

第六章 Android服务

-讨论:Android的服务有什么作用?

-6.1 系统服务概述

--6.1 系统服务概述

-6.1 系统服务概述--作业

-6.2 访问系统服务

--6.2 访问系统服务

--6.2 实践案例-通知服务

-6.2 访问系统服务--作业

-6.3 自定义服务

--6.3 自定义服务

--6.3.1 实践案例-启动服务

--6.3.2 实践案例-绑定服务

--6.3.3 实践案例-后台服务

-第6章 Android服务--6.3 自定义服务

-6.4 多线程

--6.4 多线程

--6.4.2 实践案例-MyService下载

--6.4.3 实践案例-MyIntentService

--6.4.4 实践案例-AsyncTask实现对话框下载

--6.4.5 实践案例-下载精灵

-第6章 Android服务--6.4 多线程

-讨论:Android中怎么启动Service?

第七章 内容提供者ContentProvider

-讨论:ContentProvide的作用是什么?

-7.1 Android运行权限

--7.1 Android运行权限

--7.1 实践案例-拨打电话与发送短信

-7.1 Android运行权限--作业

-7.2 URL URI概述

--7.2 URL URI概述

-第7章 内容提供者ContentProvider--7.2 URL URI概述

-7.3 ContentProvider概述

--7.3 ContentProvider概述

--7.3 实践案例-读取联系人

-第7章 内容提供者ContentProvider--7.3 ContentProvider概述

-7.4 访问通讯录

--7.4 访问通讯录

--7.4.1 实践案例-读取通讯录

--7.4.2 实践案例-添加通讯录

--7.4.3 实践案例-删除更改通讯录

-第7章 内容提供者ContentProvider--7.4 访问通讯录

-7.5 课后作业案例

--7.5.1 实践案例-文件管理器-查看

--7.5.2 实践案例-文件管理器-播放

-讨论:ContentProvide如何使用?

第八章 多媒体

-讨论:Android多媒体主要应用于哪些场景?

-8.1 相机服务

--8.1 相机服务

--8.1.1实践案例-拍照服务

--8.1.2 实践案例-相册服务

-8.1 相机服务--作业

-8.2 音视频服务

--8.2 音视频服务

--8.2.1实践案例-音乐播放

--8.2.2 实践案例-视频播放

-8.2 音视频服务--作业

-讨论:Android视频组件的使用流程?

第九章 网络技术

-讨论:为什么使用Json作为网络的通讯格式?

-9.1 网络服务概述

--9.1 网络服务概述

--9.1 实践案例-WebView和Http服务

-9.1 网络服务概述--作业

-9.2 网络框架

--9.2 网络框架

--9.2 实践案例-okhttp框架

-9.2 网络框架--作业

-9.3 Json

--9.3 Json

--9.3 实践案例-json协议

-第9章 网络技术--9.3 Json

-9.4 Volley

--9.4 volley

--9.4 实践案例-volley框架

-第9章 网络技术--9.4 Volley

-讨论:OkHttp和Volley的有什么区别?

第十章 数据存储

-讨论:Android的存储方式有哪几种?

-10.1 文件存储

--10.1 文件存储

--10.1.1 实践案例-文件读写布局

--10.1.2 实践案例-文件读写

--10.1.3 实践案例-SharedPreference文件读写

-10.1 文件存储--作业

-10.2 数据库存储

--10.2 数据库存储

--10.2.1 实践案例-Sqlite数据库操作布局

--10.2.2 实践案例-Sqlite数据库操作

-10.2 数据库存储--作业

-讨论:SQLite的基础操作的流程是什么?

课程实训(不计入考核)

-第1章 实训简介以及开发环境配置

--实训项目简介PPT以及实训指导书

--1.1 实训项目简介

--1.2 项目开发环境配置

-第2章 在线音乐播放器整体设计以及服务端开发

--在线音乐播放器整体介绍PPT以及服务端开发实训指导书

--2.1 在线音乐播放器-整体设计

--2.2 在线音乐播放器-服务端开发

-第3章 在线音乐播放器-客户端开发

--3.1 客服端开发实训指导书以及PPT

--3.2 客户端开发-讲课视频

-第4章 在线音乐播放器-完整版

--4.1 实训指导书以及PPT

--4.2 在线音乐播放器-完整版授课视频

-第5章 QQ聊天项目

--5.1 实训指导书以及PPT

--5.2 QQ聊天项目授课视频

-第6章 在线点餐系统

--6.1 实训指导书以及PPT

--6.2 在线点餐系统授课视频

6.3 自定义服务笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。