本站支持尊重有效期内的版权/著作权,所有的资源均来自于互联网网友分享或网盘资源,一旦发现资源涉及侵权,将立即删除。希望所有用户一同监督并反馈问题,如有侵权请联系站长或发送邮件到ebook666@outlook.com,本站将立马改正
本书从基础、架构、安全、性能优化、新技术、测试等角度,通过简单的代码示例详尽地展示了 Android 开发技巧
本书作者技术基础深厚扎实,是新技术的探索和追逐者,他对于技术发自内心地热爱, 是业界非常优秀的 Android 架构师
本书是作者在一线互联网企业工作多年的经验沉淀,从不同角度对 Android 新技术抛砖引玉,由浅入深,将实战中的案例抽象成原型,通俗易懂
本书对于技术的解读朴实风趣,深入浅出,是 Android 工程师的进阶宝典,腾讯、华为、阿里、百度、平安科技等一线移动开发工程师联袂推荐
《Android高级进阶》是Android的进阶学习指南,主要为Android初中级开发者进阶所需的知识,高级开发者也可以从本书中发现很多共鸣点。《Android高级进阶》从8个方面对50个知识点进行分类讲解,包括基础篇、系统架构篇、经验总结篇、新技术篇、性能优化篇、移动安全篇、工具篇、测试篇。熟练掌握这些知识点后,应该就能够应付实际项目开发中的绝大部分问题了。
《Android高级进阶》的主要目的在于给读者一个完整的Android中高级开发者知识图谱。笔者希望通过《Android高级进阶》的系统讲解,能够帮助读者在面试和工作中收获自己满意的成绩。
Android 应用开发发展到今天,已经成为一个非常成熟的技术方向,市面上涌现了大量关于Android 开发的图书,总的来说可以分为以下几类。
入门实战类:这类图书是市面上占比□多的,也是初中级开发者比较青睐的一类图书,基本上介绍的都是Android的基础知识,例如界面开发、数据存储、网络通信、数据库操作、传感器使用等,□后附上一两个简单实战项目的介绍。建议读者在入门的时候买一本评价还不错的这类图书学习一遍,然后结合实际项目进行知识巩固即可,之后这类书基本上扮演的是工具书的角色,就是在忘记某个知识点的时候到书中查一查重新温习一遍。
源码分析类:这类图书又可以分为Framework层源码分析类和Native层源码分析类两种,这类图书主要针对从事Android系统开发的读者。当然,从事应用开发的读者如果对Android Framework等底层的实现原理有所了解的话那也是大有裨益的,而且相对而言更有优势。
安全和逆向分析类:这类图书主要介绍的是Android平台的软件安全、逆向分析及加解密技术等,主要涉及Android软件的静态分析、动态调试、破解及反破解等技术。这个方向的知识既有Android应用开发者所需要的,也有Android系统开发者所需要的,市场上也有专门的Android系统安全相关的职位。
系统移植和驱动类:这类图书主要介绍的是Android内核、移植和驱动开发的整个底层嵌入式开发知识,这一类知识点其实并不能算作移动端开发,本质上属于传统的嵌入式开发领域,毕竟Android底层就是一个Linux系统。
以上便是目前笔者所看到的Android 图书市场所覆盖的内容,可以说是大而全。但事实上在笔者看来,还有一类图书是目前没有出现的,那就是体现一线互联网公司工程实践中涉及的重要知识点,笔者将之归类为第5 类:工程实践类。希望本书能够弥补这个空白,并期待能够看到更多此类图书的出现。
本书内容
本书从结构上分为8 篇,共50 个知识点。
基础篇:这是占比□大的一个篇章,虽然名为基础篇,但你应该理解为是高级进阶里面的基础知识,而不是Android开发入门的基础知识。本篇主要包含Android View、动画、Support Library、Gradle、NDK、ANR、异步技术、注解、数据序列化和Hybrid等知识点。
系统架构篇:本篇侧重介绍架构和项目整体的相关知识,主要包括UI架构、事件总线、编码规范和技术堆栈等知识点。
经验总结篇:本篇侧重介绍Android工程实践中得出的经验,主要包括64K方法数限制、插件框架、推送原理、APP瘦身、Crash统计等知识点。
新技术篇:本篇侧重介绍新近出现的技术点,当然可能本书出版时已经没那么新了,但并不妨碍其重要性,主要包括函数式编程思想简介、依赖注入、Kotlin、React Native、在线热修复、AOP和Facebook Buck等知识点。
性能优化篇:本篇侧重介绍目前Android平台常见的性能优化相关知识,主要包括代码优化、图片优化、电量优化、布局优化和网络优化等知识点。
移动安全篇:本篇侧重介绍很多应用中经常会忽略的安全知识,主要包括混淆、反编译、密钥隐藏、加固和如何编写安全的代码等知识点。
工具篇:本篇介绍了Android开发中会用到的几个工具,主要包括Android Studio、Stetho、LeakCanary和Redex等知识点。
测试篇:本篇介绍了测试相关的知识,这部分是很多开发人员经常容易忽略的内容,本质上属于测试领域,但开发人员需要有所了解,主要包括Android单元测试、UI自动化测试、静态代码分析和自动化构建等工具。
读者对象
本书的读者对象如下。
Android应用研发工程师
计算机相关专业的学生
致谢
感谢董英编辑找到我并建议我出一本关于Android 开发相关的图书,不然也不会有这本书的存在;感谢妻子恋恋对我的写作和生活的鼓励和陪伴;感谢父母和老师对我的培养;感谢我曾经就职的公司:华为、百度、平安科技,以及现在所在的平安金融科技;感谢华为PTN、华为推送、百度文库、百度导航、百度打车、Hyperion、任意门、银行一账通等项目的兄弟姐妹们,是过往的这些公司和团队磨砺了我。
勘误与互动
读者如果发现本书文字、代码和图片等信息存在错误或者纰漏,欢迎反馈给我。对书中内容或者Android 应用开发中有什么疑问,也可以与我互动,届时将在微信公众号定期发布本书的勘误信息,并解答大家的疑问。我的相关信息如下。
微信公众号:ASCE1885
微博:http://weibo.com/asce885?is_all=1
GitHub:https://github.com/ASCE1885
1.1触摸事件的类型
触摸事件对应的是MotionEvent类,事件的类型主要有如下三种。yyACTION_DOWN:用户手指的按下操作,一个按下操作标志着一次触摸事件的开始。yyACTION_MOVE:用户手指按压屏幕后,在松开之前,如果移动的距离超过一定的阈值,那么会被判定为ACTION_MOVE操作,一般情况下,手指的轻微移动都会触发一系列的移动事件。
yyACTION_UP:用户手指离开屏幕的操作,一次抬起操作标志着一次触摸事件的结束。在一次屏幕触摸操作中,ACTION_DOWN和ACTION_UP这两个事件是必需的,而ACTION_MOVE视情况而定,如果用户仅仅是点击了一下屏幕,那么可能只会监测到按下和抬起的动作。
1.2事件传递的三个阶段
在了解了触摸事件的三种主要类型之后,在讲解Activity、View、ViewGroup的事件传递的具体实现之前,我们需要来了解本章开头说的事件传递的三个阶段。y分发(Dispatch):事件的分发对应着dispatchTouchEvent方法,在Android系统中,所有的触摸事件都是通过这个方法来分发的,方法原型如下。ublicbooleandispatchTouchEvent(MotionEventev)在这个方法中,根据当前视图的具体实现逻辑,来决定是直接消费这个事件还是将事件继续分发给子视图处理,方法返回值为true表示事件被当前视图消费掉,不再继续分发事件;方法返回值为super.dispatchTouchEvent表示继续分发该事件。如果当前视图是ViewGroup及其子类,则会调用onInterceptTouchEvent方法判定是否拦截该事件。yy拦截(Intercept):事件的拦截对应着onInterceptTouchEvent方法,这个方法只在ViewGroup及其子类中才存在,在View和Activity中是不存在的。方法的原型如下。
publicbooleanonInterceptTouchEvent(MotionEventev)同理,这个方法也是通过返回的布尔值来决定是否拦截对应的事件,根据具体的实现逻辑,返回true表示拦截这个事件,不继续分发给子视图,同时交由自身的onTouchEvent方法进行消费;返回false或者super.onInterceptTouchEvent表示不对事件进行拦截,需要继续传递给子视图。
yy消费(Consume):事件的消费对应着onTouchEvent方法,方法原型如下。publicbooleanonTouchEvent(MotionEventevent)该方法返回值为true表示当前视图可以处理对应的事件,事件将不会向上传递给父视图;返回值为false表示当前视图不处理这个事件,事件会被传递给父视图的onTouchEvent方法进行处理。
在Android系统中,拥有事件传递处理能力的类有以下三种。yyActivity:拥有dispatchTouchEvent和onTouchEvent两个方法。
yyViewGroup:拥有dispatchTouchEvent、onInterceptTouchEvent和onTouchEvent三个方法。yyView:拥有dispatchTouchEvent和onTouchEvent两个方法。本章接下来将分别介绍View和ViewGroup的事件传递机制,Activity相关的内容穿插其中,将不再单独介绍。
1.3View的事件传递机制
虽然ViewGroup是View的子类,但是这里所说的View专指除ViewGroup外的View控件,例如TextView、Button、CheckBox等,View控件本身已经是□小的单位,不能再作为其他View的容器。View控件拥有dispatchTouchEvent和onTouchEvent两个方法。为了清楚地演示,我们首先来定义一个继承TextView的类MyTextView,如下所示。我们将每个事件的触发都打印了日志,以方便了解事件传递的流程。
同时定义一个MainActivity用来展示MyTextView,在这个Activity中,我们为MyTextView设置了点击(onClick)和触摸(onTouch)监听,方便跟踪了解事件传递的流程,代码如下。
运行上面的代码,点击MyTextView,在Logcat中将打印出如下日志。
从上面的代码和运行日志可以看出,dispatchTouchEvent、onTouchEvent这两个方法的返回值可能存在以下三种情况。
yy直接返回false。
yy直接返回true。
yy返回父类的同名方法,例如super.dispatchTouchEvent。不同的返回值会导致事件传递流程相差甚远,通过不断修改这些方法的返回值并查看日志记录,我们□终可以得到屏幕按下操作ACTION_DOWN事件的处理流程如图1-1所示,ACTION_UP的流程与图1-1类似,只不过事件类型不同而已,我们将不再一一列举。
从上面的流程图可以得出以下结论。
……
顾浩鑫,网络 ID:ASCE1885,平安金融科技移动研发工程师,目前主要从事 Android & React Native 相关研发工作,毕业于华中科技大学图像识别与人工智能研究所,曾先后就职于华为、百度、平安科技。
与本书作者在两家公司都是同事,也有多个Android项目合作的经历,作者基础非常扎实,经常探索并应用Android新技术、新框架,是业界非常优秀的Android架构师。本书是作者在一线互联网企业工作多年的经验沉淀,从不同角度对Android新技术抛砖引玉,将实战中的案例抽象成原型,全书内容通俗易懂,特别推荐给有志在移动端发展的工程师朋友们。
腾讯移动互联网事业部 何朝阳
书中涵盖了Android开发生命周期的各个方面,尤其注重高质量的开发实践。作者从基础、架构、安全、性能优化、新技术、测试等角度,通过简单的代码示例详尽地展示了Android开发技巧。作者对代码的优雅以及对卓越性能的完美追求,足以保证本书成为Android研发工程师不可或缺的参考书。
腾讯移动互联网事业部 揭宗昌
与笔者共事一年多,深刻体会到笔者扎实沉稳的气质,以及探索创新的锐气。长期从事一线软件开发工作使得笔者对“工欲善其事,必先利其器”有着深刻的理解,本书从Android开发涉及的各个方面,各个阶段阐述笔者的经验沉淀,也系统地介绍各类开源工具和开发利器,适合各层次的读者阅读。
华多网络娱乐部 欧阳绍聪
本书作者技术基础深厚、扎实,是新技术的探索和追逐者,与他共事期间,我深刻感受到他对于技术发自内心的热爱,他的Android应用开发技术达到炉火纯青的地步,在APP开发和优化上有丰富的实战经验,同时他还是开源社区的活跃分子和贡献者。作者经历了移动互联网的热潮,见证了 APP应用开发技术的萌芽、发展和成熟。现在移动互联网的开发者也逐步开始关注插件化技术、性能优化、行业新技术,系统架构等进阶技术。本书的上市弥补了Android进阶技术系统化解读的空缺,作者对于技术的解读朴实风趣,深入浅出,内容都是在大型互联网公司工作与探索积累下来的精华,是Android工程师的进阶宝典和面试宝典,推荐给广大从事移动开发的朋友们。
阿里移动事业部 顾大辉