《Android开发艺术探索》图书勘误
第一章
- 在13页提到“系统只在Activity异常终止的时候才会调用onSaveInstanceState与onRestoreInstanceState来储存和恢复数据,其他情况不会触发这个过程。”这句话的描述不确切,准确点说,应该是“系统只在Activity异常终止的时候才会调用onSaveInstanceState与onRestoreInstanceState来储存和恢复数据,其他情况不会触发这个过程。但是按Home键或者启动新Activity仍然会单独触发onSaveInstanceState的调用。”
- 在25页中提到“最后再在MainActivity中单击按钮启动SecondActivity,现在按back键,然后看到的是哪个Activity?”这句话表达不确切,准确点说,应该是“然后按两次back键”,详情可以参考具体的分析。
- 第12页第一行中“在我们选择屏幕以后”,改为“当我们旋转屏幕以后”。
- 第28页的第一句话,“这个模式一般需要和FLAG_ACTIVITY_NEW_TASK 配合使用,在这种情况下”,改为“这个标记位一般会和singleTask启动模式一起出现,在这种情况下”。
- 第1.2.2小节中,Activity的Flags,这一节的内容直接翻译了Android官方文档(http://developer.android.com/guide/components/tasks-and-back-stack.html#TaskLaunchModes),但是经过实例验证,发现书中的描述不准确(或者说官方文档中的描述不准确),结论为:Flags并不能简单地等同于启动模式,这一块内容需要进一步验证。
第二章
- 在47页中提到“以上就是Parcelable和Serializable和区别”。此处有笔误,应该是“以上就是Parcelable和Serializable的区别”。
- 在47页中提到“直观来说,Binder是Android中的一个类,它继承了IBinder接口。”此处用语不严谨,应该为“它实现了IBinder接口”。
- 在86页中提到“其中 beginBroadcast 和 beginBroadcast 必须要配对使用,哪怕我们仅仅是想要获取 RemoteCallbackList 中的元素个数”。此处有笔误,应该是“其中 beginBroadcast 和 finishBroadcast 必须要配对使用,哪怕我们仅仅是想要获取 RemoteCallbackList 中的元素个数”。
- 在36页中提到“Linux上可以通过命名管道、共享内容、信号量等来进行进程间通信”,改为”Linux上可以通过命名管道、共享内存、信号量等来进行进程间通信“。
- 在42页中倒数第6行提到” 在 Android 中也提供了新的序列化方式,那就是 Parcelable 接口,使用 Parcelable 来实现对象的序列号。“,改为”在 Android 中也提供了新的序列化方式,那就是 Parcelable 接口,使用 Parcelable 来实现对象的序列化。“
- 第90页,aidl那一节,服务端和客户端如果是两个工程,则在Service的onBind方法中无法验证客户端的权限。原因是onBind方法并不是一个Binder调用,它运行在服务端的UI线程中,故在onBind中只能验证服务端的权限,然而这是没有意义的。推荐大家按照第二种方法,在onTransact方法中对客户端进行权限验证。
第三章
- 第132页中提到” 上面简单介绍了通过动画来移动 View 的方法,关于动画会在第 5 章中进行详细说明“,改为”上面简单介绍了通过动画来移动 View 的方法,关于动画会在第 7 章中进行详细说明“。同理,135页中的第5章也应该是第7章。
- 第125页中提到” ACTION_UP——手机从屏幕上松开的一瞬间。“,改为”ACTION_UP——手指从屏幕上松开的一瞬间。“
- 第126页中提到” 接着,当我们先知道当前的滑动速度时,这个时候可以采用如下方式来获得当前的速度“,改为”接着,当我们想知道当前的滑动速度时,这个时候可以采用如下方式来获得当前的速度“。
- 第138页中3.3.2小节中,应该是“以下代码可以让一个View在100ms内向右移动100像素”,向左是笔误,应该是向右。
第四章
- 第196页中提到” 下面我们来回答一个在 4.3.2 节中提到的问题: View 的测量宽/高和最终/宽高有什么区别?“,改为”下面我们来回答一个在 4.3.2 节中提到的问题: View 的测量宽/高和最终宽/高有什么区别?“
- 第207页中” mColor = a.getColor(styleable.CircleView_circle_color, Color.RED); “,改为”mColor = a.getColor(R.styleable.CircleView_circle_color, Color.RED); “
- 第207页中,“通过 recycle 方法来实现资源,这样 CircleView 中所做的工作就完成了。“,改为”通过 recycle 方法来释放资源,这样 CircleView 中所做的工作就完成了。“
- 第176页中提到” 如何得到 content 呢?可以这样:ViewGroup content= findViewById(R.android.id.content)。“,改为”如何得到 content 呢?可以这样:ViewGroup content= (ViewGroup)findViewById(android.R.id.content)。“
- 182页中最下面的表格里,左下方的“warap_content” 改为 “wrap_content”。
- 205页中的代码有误,改为:
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
final int paddingLeft = getPaddingLeft();
final int paddingRight = getPaddingRight();
final int paddingTop = getPaddingTop();
final int paddingBottom = getPaddingBottom();
int width = getWidth() - paddingLeft - paddingRight;
int height = getHeight() - paddingTop - paddingBottom;
int radius = Math.min(width, height) / 2;
canvas.drawCircle(paddingLeft + width / 2, paddingTop + height/2, radius, mPaint);
} - 209中的代码的最后一段有误,改为:
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
final int paddingLeft = getPaddingLeft();
final int paddingRight = getPaddingRight();
final int paddingTop = getPaddingTop();
final int paddingBottom = getPaddingBottom();
int width = getWidth() - paddingLeft - paddingRight;
int height = getHeight() - paddingTop - paddingBottom;
int radius = Math.min(width, height) / 2;
canvas.drawCircle(paddingLeft + width / 2, paddingTop + height / 2, radius, mPaint);
}
第六章
- 在250页中提到”android:endColo——渐变的结束色“,此处有笔误,应该是”android:endColor——渐变的结束色“
第七章
- 第278页中的代码有误,改为:android:repeatMode=[“restart” | “reverse”]
- 第279页中的提到“另一个是 android:repeatMode,它表示动画循环的模式,有两个选项: “repeat”和“reverse” ,分别表示连续重复和逆向重复。”,改为“另一个是 android:repeatMode,它表示动画循环的模式,有两个选项: “restart”和“reverse” ,分别表示连续重复和逆向重复。”
第九章
- 第336页中提到” Service 的启动过程从 ContextWrapper 的 startActivity 开始,如下所示。“,改为”Service 的启动过程从 ContextWrapper 的 startService 开始,如下所示。“
- 第337页中提到” 下面继续看 ContextImpl 的 startActivity 的实现,如下所示。“,改为”下面继续看 ContextImpl 的 startService的实现,如下所示。“
第十章
- 在372页中提到“由于Android开发规范的限制,我们并不能在主线程中访问UI控件“。此处有笔误,应该是”我们并不能在子线程中访问UI控件“。
第十三章
- 第468页中提到“为了更好地对多插件进行支持,需要合理地去管理各个插件的 DexClassoader “,改为”为了更好地对多插件进行支持,需要合理地去管理各个插件的 DexClassLoader “。
第十五章
- 在502页中提到“适当使用软引用和软引用”。此处有笔误,应该是“适当使用软引用和弱引用”。
- 在507页中提到”一个合理的命令风格可以让读者阅读源码就像在阅读注释一样“,此处有笔误,应该是”一个合理的命名风格可以让读者阅读源码就像在阅读注释一样“
说明
欢迎大家向我反馈勘误信息,在本文下面留言即可,我会更新在本文中。所有的勘误将会在本书重印时予以修正,所以希望大家多多向我反馈勘误信息。
注意:本文正文以及留言中所有的勘误都将在《Android开发艺术探索》第四次印刷时全部修正。
PS:最近很多同学问我哪里可以购买到第四次印刷的书,其实目前市面上都是四次印刷以后的书了,只是京东等网站懒得更新图书信息而已,所以大家勇敢地购买吧!
书中源代码下载
https://github.com/singwhatiwanna/android-art-res
- 欢迎大家加入我的知识星球,一起学习交流
《Android开发艺术探索》图书勘误相关推荐
- 《Android开发艺术探索》读书笔记——Cha3.2.2使用动画实现View的滑动
章节来自<Android开发艺术探索> 第一种方式 3.2.2 使用动画 上一节介绍了采用scrollTo/scrollBy来实现View的滑动,本节介绍另外一种滑动方式,即使用动画,通过 ...
- 《Android开发艺术探索》自定义View中关于“HorizontalScrollViewEx”的改进
在<Android开发艺术探索>一书中自定义View一节中提到了关于一个类似横向滑动List的自定义ViewGroup:HorizontalScrollViewEx.如果你使用过的话就会发 ...
- 《android开发艺术探索》读书笔记(五)--RemoteViews
接上篇<android开发艺术探索>读书笔记(四)--View工作原理 No1: RemoteViews使用场景:通知栏和桌面小部件 No2: 通知栏主要通过NotificationMan ...
- Android开发艺术探索——第七章:Android动画深入分析
Android开发艺术探索--第七章:Android动画深入分析 Android的动画可以分成三种,view动画,帧动画,还有属性动画,其实帧动画也是属于view动画的一种,,只不过他和传统的平移之类 ...
- Android开发艺术探索读书笔记(一)
首先向各位严重推荐主席这本书<Android开发艺术探索>. 再感谢主席邀请写这篇读书笔记 + 书评.书已经完整的翻完一遍了,但是还没有细致的品读并run代码,最近有时间正好系统的把整本书 ...
- Android开发艺术探索--第二章IPC机制(2)之Binder
最近在拜读任主席的Android开发艺术探索,现在看了一半,再回头看前面的,感觉跟没有看一样,所以还是把知识点总结一下吧,这一节咱们来讲一下IPC中的Binder 直观来说,Binder是Androi ...
- Android开发艺术探索完结篇——天道酬勤
这片文章发布,代表着我已经把本书和看完并且笔记也发布完成了,回忆了一下我看Android群英传,只用了两个月,但是看本书却花了2016年05月04日 - 2018年07月16日,整整两年多,真是惭愧 ...
- Android 开发艺术探索——第十章 Android的消息机制
Android 开发艺术探索--第十章 Android的消息机制读书笔记 Handler并不是专门用于更新UI的,只是常被用来更新UI 概述 Android的消息机制主要值得就是Handler的运行机 ...
- 《Android开发艺术探索》完结篇
笔记链接: <Android开发艺术探索>之Activity的生命周期和启动模式(一) <Android开发艺术探索>之IPC机制上(二) <Android开发艺术探索& ...
最新文章
- 智能驾驶时代已经到来
- 图像几何变换之透视变换
- 【原创】DevExpress控件GridControl中的布局详解
- 一位 CEO 对 CTO 技术领导力的期待是什么?
- 摆脱困境:向REST API添加验证
- 10 个令人惊喜的 jQuery 插件推荐
- linux驱动架构变化,Linux网卡驱动架构分析
- 虚拟人出新晋卷王,无薪工作70天却没人认出来
- 第三届阿里云磐久智维算法大赛——GRU BaseLine
- 网络攻防技术(2021期末考试)
- 父亲发现高三女儿早恋 机智做法让网友惊呆
- SAS(五)建立SAS数据集的方法及导出数据
- 写高效的java代码
- 啦啦!记录学校C语言作业
- android wear手表6,Android Wear(手表)开发
- 1.【R包管理】查看安装目录和已有R包、安装、使用、迁移
- 金融业信贷风控算法4-python的入门和介绍
- 小程序影藏溢出的gif_你的GIF动图不够酷炫?可能是你还不知道这5个有趣的网站!...
- [讨论]日本地震对中国软件服务外包行业的影响分析(宏观)
- 5.2 应用程序和驱动程序中buffer的传输流程