前言 近年来,移动互联网的发展非常迅猛,影响着人们生活的方方面面。作为两大主流移动操作系统平台之一的Android也在不断发展,新技术、新特色层出不穷,市场份额已在2014年超越iOS平台。Kotlin具有简洁、易学、安全、快捷、开源等特点,是Android移动应用开发的利器;此外,Android移动应用的架构设计为移动应用的开发奠定了基础,MVVM(Model View ViewModel)已为移动开发的主流架构。2018年,由谷歌(Google)公司推出的Android JetPack具有架构组件,能协助开发者快速搭建基于MVVM的Android移动应用。5G技术的不断发展,为基于Android平台的移动终端提供了更快的网络服务,Retrofit 2.0 HTTP 网络请求框架等一系列产品让开发移动互联网应用更加方便简单,特别是RxJava 3.0框架在异步流的处理方面有着绝对的优势,可以更快捷地处理网络并发数据。 本书作者在Android移动应用开发的教学和科研实践过程中发现了一些更方便、更快捷,让开发流程更加清晰的方法,于是萌生了编写本书的想法。本书基于Android 10.0版本,采用了官方推荐的Android Studio开发工具,并采用Kotlin进行案例介绍。 本书分为10章,循序渐进地阐述了Android的相关知识点,并结合案例将相关知识点进行实践应用,在每章的习题中强化了对概念的理解和掌握。为了方便读者反复观看和学习相关的知识点,本书提供了配套的微课视频和课件。 本书涉及的知识点包括Android概述,Kotlin基础和面向对象编程,Android的四大组件(活动、消息接收器、服务、内容提供者),Android的界面开发,Android的并发处理,Android的持久化处理和Android JetPack。上述知识点并没有按照传统的方式介绍,而是从实际应用出发,将知识点进行整合,采用多种方式介绍,突出重点知识和核心知识,避免大而全式的介绍方式。由于Kotlin的知识点非常丰富,不可能用很少的篇幅介绍完整,因此本书第2章在介绍Kotlin基础知识时,侧重Kotlin在移动应用开发中常用的知识点,例如Kotlin基本语法和Kotlin面向对象开展介绍,特别对移动应用开发大量使用的函数式编程进行深入介绍。本书根据功能关联性,将相关的知识点进行融合。例如在第3章介绍Activity时,不仅仅对Activity进行介绍。还对同为处理界面的Fragment进行介绍。在第8章介绍Android的网络处理时,不但介绍传统的网络处理的方式(WebView组件加载网页和HttpURLConnection()函数进行网络处理),还引入Retrofit 2.0框架的实现网络处理。由于网络处理经常涉及JSON数据解析和网络访问的异步处理,因此GSON库和处理异步流的RxJava 3.0库的知识在该章介绍。根据功能类似性,本书将相关知识点进行了对比介绍。例如,在介绍Android的并发处理时,介绍线程、Handler机制、异步任务和Kotlin协程;在介绍Android的持久化处理时,介绍SharePreferences、文件处理和SQLite数据库,使读者充分了解3种进行持久化处理的技术特点。本书将所学知识点融入同一个应用实例中,采用层层推进的方式开展。例如,在介绍Android JetPack架构组件时,依次对它们在移动应用开发的架构开展说明;在同一个移动应用案例中,介绍ViewModel组件、Service的Lifecycle组件、视图绑定、数据绑定、Navigation组件及用于后台任务处理的WorkManager组件和Paging组件,使读者对所学知识有更深入的理解。 本书提供了具有实践意义的移动应用案例,如掷骰子游戏、心理测试、歌词同步播放、歌曲专辑播放、智能聊天、调用相机和相册、播放媒体库视频、在线图片添加水印等,并结合微课视频,对这些案例进行讲解和说明。 本书课后练习配套答案、课件以及微课视频可以在清华大学出版社的官方网站或扫码下载和观看。 本书由南昌大学陈轶等编写。另外,南昌大学计算机科学与技术系的白似雪教授、武有新教授、江顺亮教授、邱桃荣教授在本书编写过程给予技术上的支持和帮助,在此表示深深感谢。感谢南昌大学徐少平教授在百忙之中进行审稿,并提出宝贵建议。南昌大学刘捷老师、刘萍老师、韩青老师和邹芳红老师对本书也有贡献。此外,还要衷心感谢清华大学出版社的编校人员,非常佩服他们的专业和敬业精神。由于时间和编者学识有限,书中不足之处在所难免,敬请大家批评指正。 陈轶2022年8月