《Android开发艺术探索》图书勘误
第一章
- 在13页提到“系统仅仅在Activity异常终止的时候才会调用onSaveInstanceState与onRestoreInstanceState来储存和恢复数据。其它情况不会触发这个过程。”这句话的描写叙述不确切。准确点说,应该是“系统仅仅在Activity异常终止的时候才会调用onSaveInstanceState与onRestoreInstanceState来储存和恢复数据,其它情况不会触发这个过程。可是按Home键或者启动新Activity仍然会单独触发onSaveInstanceState的调用。
”
- 在25页中提到“最后再在MainActivity中单击button启动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那一节,服务端和client假设是两个project,则在Service的onBind方法中无法验证client的权限。原因是onBind方法并非一个Binder调用,它执行在服务端的UI线程中,故在onBind中仅仅能验证服务端的权限。然而这是没有意义的。
推荐大家依照另外一种方法,在onTransact方法中对client进行权限验证。
第三章
- 第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:近期非常多同学问我哪里能够购买到第四次印刷的书。事实上眼下市面上都是四次印刷以后的书了,仅仅是京东等站点懒得更新图书信息而已。所以大家勇敢地购买吧!
书中源代码下载
《Android开发艺术探索》图书勘误的更多相关文章
- Android开发艺术探索——第二章:IPC机制(中)
Android开发艺术探索--第二章:IPC机制(中) 好的,我们继续来了解IPC机制,在上篇我们可能就是把理论的知识写完了,然后现在基本上是可以实战了. 一.Android中的IPC方式 本节我们开 ...
- Android开发艺术探索——第二章:IPC机制(上)
Android开发艺术探索--第二章:IPC机制(上) 本章主要讲解Android的IPC机制,首先介绍Android中的多进程概念以及多进程开发模式中常见的注意事项,接着介绍Android中的序列化 ...
- Android开发艺术探索读书笔记——进程间通信
1. 多进程使用场景 1) 应用某些模块由于特殊需求须要执行在单独进程中. 如消息推送,使消息推送进程与应用进程能单独存活,消息推送进程不会由于应用程序进程crash而受影响. 2) 为加大一个应用可 ...
- Android开发艺术探索读书笔记——01 Activity的生命周期
http://www.cnblogs.com/csonezp/p/5121142.html 新买了一本书,<Android开发艺术探索>.这本书算是一本进阶书籍,适合有一定安卓开发基础,做 ...
- Android开发艺术探索笔记——View(二)
Android开发艺术探索笔记--View(二) View的事件分发机制 学习资料: 1.Understanding Android Input Touch Events System Framewo ...
- Android开发艺术探索笔记—— View(一)
Android开发艺术探索笔记 --View(一) View的基础知识 什么是View View是Android中所有控件的基类.是一种界面层控件的抽象. View的位置参数 参数名 获取方式 含义 ...
- android开发艺术探索
android开发艺术探索 百度任玉刚 http://blog.csdn.net/singwhatiwanna/article/details/46810527
- 《Android开发艺术探索》读书笔记 (13) 第13章 综合技术、第14章 JNI和NDK编程、第15章 Android性能优化
第13章 综合技术 13.1 使用CrashHandler来获取应用的Crash信息 (1)应用发生Crash在所难免,但是如何采集crash信息以供后续开发处理这类问题呢?利用Thread类的set ...
- 《Android开发艺术探索》读书笔记 (9) 第9章 四大组件的工作过程
第9章 四大组件的工作过程 9.1 四大组件的运行状态 (1)四大组件中只有BroadcastReceiver既可以在AndroidManifest文件中注册,也可以在代码中注册,其他三个组件都必须在 ...
随机推荐
- 一个exception
今天调错,发生了一个错误:java.lang.IllegalStateException: ApplicationEventMulticaster not initialized [closed] 后 ...
- 对实体 "characterEncoding" 的引用必须以 ';' 分隔符结尾
今天在springmvc集成mybatis时,遇到一个错误 "characterEncoding" 的引用必须以 ';' 分隔符结尾. 这是“&”定义与解析的原因,需要对& ...
- 犯罪现场调查第一季/全集CSI迅雷下载
英文译名 CSI (第1季) (2000首播)CBS. 本季看点:<犯罪现场调查>赌城拉斯维加斯吸引着做发财梦的人,也吸引着形形色色的罪犯,该市警察局的犯罪现场调查局在全美国名列第二.该剧 ...
- Redis Nosql数据库
Redis是一个key-value存储系统.和Memcached类似.可是攻克了断电后数据全然丢失的情况.并且她支持很多其它无化的value类型.除了和string外,还支持lis ...
- 帕累托分布(Pareto distributions)、马太效应
什么是帕累托分布 帕累托分布是以意大利经济学家维弗雷多·帕雷托命名的. 是从大量真实世界的现象中发现的幂次定律分布.这个分布在经济学以外,也被称为布拉德福分布. 帕累托因对意大利20%的人口拥有80% ...
- Ember.js 1.0 RC6 发布,JavaScript 框架
Ember.js 1.0 发布了第 6 个 RC 版本,下载地址:https://github.com/emberjs/ember.js/tree/v1.0.0-rc.6 该版本包含众多的改进记录,详 ...
- MySQL 锁模式
InnoDB implements standard row-level locking where there are two types of locks, shared (S) locks an ...
- sql server 复制,镜像,日志传输及故障转移集群区别
一, 数据库复制 SQL Server 2008数据库复制是通过发布/订阅的机制进行多台服务器之间的数据同步,我们把它用于数据库的同步备份.这里的同步备份指的是备份服务器与主服务器进行 实时数据同步, ...
- “秘书九段的故事”,要学会给自己制定一个工作N段或者技术N段
总经理要求秘书安排次日上午九点开一个会议.在这件事下,什么是任务?什么是结果? 通知到所有参会的人员,然后秘书自己也参加会议来做服务,这是“任务”.但我们想要的结果是什么呢?下面是一至九段秘书的不同做 ...
- 文本框只能输入数字(兼容IE火狐)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...