Android移动应用开发是移动应用开发领域的热点。本书介绍Android移动应用开发的核心技术,具体包括Android的开发环境、Kotlin基础、Activity组件、界面开发、并发处理、广播机制、Service组件、网络应用、数据的持久化处理、ContentProvider组件,以及Android JetPack的应用开发。
为了使读者更好地理解和掌握Android移动开发技术,本书通过翔实、丰富的项目应用实例将相应的知识点串联起来,从简单到复杂,从基础应用到综合项目开发层层推进。为了符合Android移动开发的发展趋势,采用Kotlin贯穿全书。
本书可作为普通高校本科移动应用开发课程的教材,也可供移动应用开发人员学习和参考。
基于Kotlin的Android应用开发 /实践性的移动项目 /提供配套项目源代码、题库、微课视频
近年来,移动互联网的发展非常迅猛,影响着人们生活的方方面面。作为两大主流移动操作系统平台之一的Android也在不断发展,新技术、新特色层出不穷,市场份额已在2014年超越iOS平台。Kotlin具有简洁、易学、安全、快捷、开源等特点,是Android移动应用开发的利器;此外,Android移动应用的架构设计为移动应用的开发奠定了基础,MVVM(ModelViewViewModel)和MVI(ModelViewIntent)成为移动开发的两大主流架构,2018年,由谷歌(Google)公司推出的Android JetPack具有架构组件,能协助开发者快速搭建基于MVVM和MVI的Android移动应用。5G技术的不断发展,为基于Android平台的移动终端提供了更快的网络服务,Retrofit 2.0 HTTP 网络请求框架等一系列产品让开发移动互联网应用更加方便简单,特别是RxJava 3.0框架在异步流的处理方面有着绝对的优势,可以更快捷地处理网络并发数据。
本书作者在Android移动应用开发的教学和科研实践过程中发现了一些更方便、更快捷,让开发流程更加清晰的方法,于是萌生了编写本书的想法。本书基于Android 14.0版本,采用了官方推荐的Android Studio开发工具,并采用Kotlin进行案例介绍。
本书分为10章,循序渐进地阐述了Android的相关知识,结合案例将相关知识点进行实践应用,通过每章的习题强化对概念的理解和掌握。作者的个人CSDN博客也提供了额外移动应用案例的详细介绍。
本书涉及的知识点包括Android概述、Kotlin基础和面向对象编程、Android的四大组件(活动、消息接收器、服务、内容提供者)、MVVM和MVI开发模式在移动应用开发中的应用、基于Compose组件的Android的界面开发、Android的并发处理、Android的持久化处理,并将Android JetPack开发套件与移动应用的各个环节衔接起来。上述知识点并没有按照传统方式独立介绍,而是从实际应用出发,将知识点进行整合,采用多种方式进行介绍,突出重点知识和核心知识,避免大而全的介绍。由于Kotlin的知识点非常丰富,不可能用很少的篇幅介绍完整,因此本书第2章在介绍Kotlin基础时,侧重Kotlin在移动应用开发时常见的知识点,例如对Kotlin基本语法和Kotlin面向对象技术开展介绍,特别对移动应用开发时大量使用的函数式编程进行深入介绍。本书根据功能关联性,将相关的知识点进行融合。例如,第4章介绍Android的界面开发时,不仅介绍了Compose组件,还介绍了承担业务逻辑的ViewModel组件,并介绍了MVVM和MVI模式在移动应用开发中的应用。第8章介绍Android的网络应用时,不但介绍传统的网络应用方式(WebView组件加载网页和HttpURLConnection实现基于HTTP进行网络处理),还引入Retrofit 2.0框架实现网络处理。由于网络处理经常涉及JSON数据解析和网络访问的异步处理,作者将GSON库和RxJava 3.0库在网络访问的异步流处理的知识点在该章进行介绍。根据功能类似性,本书将相关知识点对比介绍。例如,在介绍Android的并发处理时,介绍线程、Handler消息处理机制、异步任务、Kotlin协程和RxJava3处理异步流的实现。在介绍Android持久化处理时,介绍DataStore、文件处理和Room组件处理SQLite数据库,使读者充分了解3种进行持久化处理的技术特点。本书将所讲知识点融入同一个应用实例中,采用层层推进的方式展开。例如,在同一个移动应用案例中结合ViewModel组件、Navigation组件、持久化处理的Room组件、后台任务处理的WorkManager组件、分页的Paging组件等Android JetPack开发套件的组件,使读者对所学知识有更深入的理解。
本书提供了具有实际意义的移动应用案例,如掷骰子游戏、心理测试、歌词同步播放、智能聊天、调用相机和相册、播放媒体库视频、在线图片添加水印、在线视频播放等具有实践意义的移动应用案例。
本书课后练习配套答案、课件等学习资源可以在清华大学出版社的官方网站或扫描下方的二维码下载使用。
本书由南昌大学陈轶编著。另外,南昌大学的武友新、江顺亮、黄伟、徐子晨教授,及刘捷、刘萍、王炜立、文喜老师在本书的编写过程中给予了支持和帮助,在此表示深深的感谢。此外,还要衷心感谢清华大学出版社的相关编校人员,非常佩服他们的专业和敬业精神。
由于时间和编者学识有限,书中不足之处在所难免,敬请大家批评指正。
陈轶2025年3月
第1章Android的开发环境1
1.1Android移动开发概述1
1.1.1Android的发展1
1.1.2Android平台的架构2
1.2开发环境和开发工具4
1.3创建第一个Android项目5
1.3.1创建新的项目5
1.3.2启动模拟器6
1.3.3运行第一个项目9
习题112第2章Kotlin基础14
2.1Kotlin概述14
2.2第一个Kotlin程序16
2.3函数18
2.4变量和数据类型19
2.4.1变量19
2.4.2数据类型的种类19
2.4.3数据类型的转换20
2.4.4可空类型的处理21
2.4.5数组和集合类型22
2.5操作符和表达式24
2.6控制结构26
2.7Lambda表达式30
2.7.1Lambda表达式的应用30
2.7.2常见的标准函数和Lambda表达式31
2.8面向对象编程33
2.8.1包和目录33
2.8.2类和对象33
2.8.3继承性35
2.8.4接口36
2.9异常处理37
习题238第3章Android的Activity组件41
3.1Activity的创建41
3.2Activity和Intent42
3.2.1显式Intent43
3.2.2隐式Intent46
3.3Activity之间的数据传递50
3.3.1传递常见数据50
3.3.2Serializable对象的传递54
3.3.3Parcelable对象的传递56
3.3.4数据的返回60
3.4Activity的生命周期64
3.4.1Activity的返回栈64
3.4.2Activity的启动方式64
3.4.3Activity的生命周期70
3.5掷骰子游戏76
习题382第4章Android的界面开发86
4.1JetPack Compose组件86
4.1.1可组合函数和预览函数86
4.1.2Modifier修饰符88
4.1.3Compose常见的UI组件92
4.1.4ConstraintLayout109
4.2搭建Scaffold111
4.3Compose组件的状态管理和重组124
4.3.1可组合项的状态124
4.3.2无状态的可组合函数和有状态的可组合函数126
4.3.3状态提升127
4.3.4状态丢失和状态保留129
4.3.5状态容器132
4.4ViewModel组件133
4.4.1MVVM模式135
4.4.2MVI模式138
4.5Navigation组件143
4.5.1页面导航的实现144
4.5.2在目的地之间安全传递数据147
4.6心理测试移动应用实例150
4.6.1项目说明150
4.6.2心理测试移动应用的功能实现150
习题4168第5章Android的并发处理169
5.1多线程169
5.2Handler机制171
5.3协程174
5.4Compose的附带效应180
5.4.1附带效应概述180
5.4.2LaunchedEffect和rememberUpdatedState182
5.4.3DisposableEffect和Lifecycle185
5.4.4SideEffect190
5.4.5produceState和derivedStateOf193
5.5RxJava库实现异步操作198
5.5.1Observer模式198
5.5.2RxJava的相关概念200
5.6歌词同步播放204
习题5209第6章Android的广播机制212
6.1BroadcastReceiver组件212
6.2发送广播215
6.2.1标准广播215
6.2.2有序广播216
习题6222第7章执行后台任务224
7.1Service组件224
7.2Service的生命周期229
7.3Activity和Service的通信230
7.4Notification通知和前台服务234
7.4.1Notification234
7.4.2前台服务237
7.5WorkManager组件244
7.5.1WorkManager的基本使用方法245
7.5.2任务链251
习题7257第8章Android的网络应用259
8.1网络访问相关配置259
8.2WebView组件260
8.3使用HttpURLConnection访问网络资源263
8.4JSON数据的解析269
8.4.1JSON格式269
8.4.2JSONObject解析JSON数据270
8.4.3GSON解析JSON数据274
8.5使用Retrofit库访问网络资源277
8.6智能聊天移动应用实例289
8.6.1功能需求分析和设计289
8.6.2系统的实现291
习题8302第9章数据的持久化处理和ContentProvider组件305
9.1DataStore存储处理305
9.2文件处理320
9.3Room组件332
9.3.1用Room实现数据库的基本操作333
9.3.2用Room实现迁移数据库341
9.4ContentProvider组件347
9.4.1创建ContentProvider组件348
9.4.2使用ContentProvider组件354
9.5调用相机和媒体库359
9.5.1运行时权限359
9.5.2拍照和显示媒体库的图片365
9.5.3访问媒体库中的视频369
习题9374第10章Paging组件376
10.1分页组件概述376
10.2分页处理378
习题10391参考文献392