本书是为大学本、专科Android学习准备的教材。自本书第一版出版以来,有许多高校和同学一直在使用,这给了我很大的激励。本书的第二版,除了更新了第一版的一些表达问题和笔误外,还增加了Android Studio的使用以及如何导入本书的案例库代码。笔者总结了多年来教学和工程经验,力争使本书做到: * 在每一个重要的知识点上,以what、why、how的方式讲解。在讲是什么(what)问题的时候,多打比方、多讲故事、多画图。让同学们首先有感性认识,再落实到程序代码层面,让学习的过程从感性认识到理性认识再到量化实现。在讲原理(why)的时候,尽量深入透彻,这是对于同学非常重要的要求。我常和学生们说:只有清楚原理才能做出优秀的程序。最后落实到how的问题,即使用的问题。 * 本书对学习者前期基础知识的要求是只要学过一点Java语言,能看懂class,会写helloworld程序,就能够学习这本教材。教材里用到的所有示例都尽可能做到内容简单、教学目标明确。 * 全书贯穿一个实例——大学教学最常使用的“图书管理系统”,这个实例从第2章开始,安排在每一章的最后一节。纵向方面,各章承前启后、层层递进,从最简单的单界面、静态数据的图书管理系统→多界面、静态数据的图书管理系统→带本地存储的图书管理系统→带网络连接的图书管理系统→带多媒体的图书管理系统→用Service实现新书上架、带异步刷新的进阶功能的图书管理系统。横向方面,每章最后一节的实例也是对该章学习内容的总结和实践。 * 根据多年来的教学经验,针对教学中实际存在的问题,我们在本书的实例中用最简单的方式融汇了已在面向对象、数据结构、数据库、网络编程、多线程、通信协议、程序结构、常用设计模式等部分前期课程学习过,但不一定能够实际运用重要知识点。我们的初衷是希望本书不仅仅是一本Android程序的教材,更希望通过对这本书的学习,激发同学们的学习热情。如在第5章,我们首先从最简单的键盘、显示器IO开始,逐步讲到联网,大家会发现在建立网络连接后的数据传输和本地IO是一样的。在代码方面,不仅给出了Android客户端源代码,还给出了服务器端Socket Server和Web Servlet的源码、源码分析和数据库脚本。这样做的目的是尽可能深入浅出、融会贯通,同时保证大部分接近零基础的 同学都能学会。这种方式也是我们在实际教学中采用的授课方式。 * 本书作为本科教材,因此这不是一本篇幅很大、面面俱到的介绍Android的书。我们认为本科教学应该是启发式的教学。我们在课堂上常要求同学们大学期间在专业课学习上做到三点: (1)扎实的专业基础知识; (2)良好的英文读写水平; (3)快速掌握陌生知识的能力。 课堂上授课时间有限,学期内有限的课程学习,打好基础,掌握学习方法,相信有兴趣的同学自然会“自学成才”,我想这也是大学学习的要领。正是基于这个想法,本书讲到的都是最重要、最基础的问题,因此在书中没有要求Android SDK版本问题。 * 为了配合教学和同学们自学,本书提供了配套教学的PPT和所有章节的源代码。读者可以扫描下面的二维码下载。 扫码下载完整代码及配套PPT 本书的写作得到了清华大学出版社的支持和帮助,得到了很多宝贵意见。我的学生戴天骥和左佳参与了第二版的修改工作。 最后,感谢我的家人对我工作的支持,感谢实验室的前辈、同事对我工作一直的支持,感谢实验室的年轻人和我一起讨论、拼搏的美好时光。 本书的完成得到重庆市重点研发项目(No.cstc2017zdcyzdyfx0002, cstc2017zdcy- zdyfx0092)、重庆市基础科学与前沿技术研究项目(No.cstc2017jcyjAX0099)和重庆市研究生教改项目(No. yjg183081)资助。 编 者 2018年10月