Android开发艺术探索

出版日期:2015-9-1
ISBN:9787121269392
作者:任玉刚
页数:524页

作者简介

《Android开发艺术探索》是一本Android进阶类书籍,采用理论、源码和实践相结合的方式来阐述高水准的Android应用开发要点。《Android开发艺术探索》从三个方面来组织内容。第一,介绍Android开发者不容易掌握的一些知识点;第二,结合Android源代码和应用层开发过程,融会贯通,介绍一些比较深入的知识点;第三,介绍一些核心技术和Android的性能优化思想。
《Android开发艺术探索》侧重于Android知识的体系化和系统工作机制的分析,通过《Android开发艺术探索》的学习可以极大地提高开发者的Android技术水平,从而更加高效地成为高级开发者。而对于高级开发者来说,仍然可以从《Android开发艺术探索》的知识体系中获益。

书籍目录

第1章  Activity的生命周期和启动模式 / 1
1.1 Activity的生命周期全面分析 / 1
1.1.1 典型情况下的生命周期分析 / 2
1.1.2 异常情况下的生命周期分析 / 8
1.2 Activity的启动模式 / 16
1.2.1 Activity的LaunchMode / 16
1.2.2 Activity的Flags / 27
1.3 IntentFilter的匹配规则 / 28
第2章 IPC机制 / 35
2.1 Android IPC简介 / 35
2.2 Android中的多进程模式 / 36
2.2.1 开启多进程模式 / 36
2.2.2 多进程模式的运行机制 / 39
2.3 IPC基础概念介绍 / 42
2.3.1 Serializable接口 / 42
2.3.2 Parcelable接口 / 45
2.3.3 Binder / 47
2.4 Android中的IPC方式 / 61
2.4.1 使用Bundle / 61
2.4.2 使用文件共享 / 62
2.4.3 使用Messenger / 65
2.4.4 使用AIDL / 71
2.4.5 使用ContentProvider / 91
2.4.6 使用Socket / 103
2.5 Binder连接池 / 112
2.6 选用合适的IPC方式 / 121
第3章 View的事件体系 / 122
3.1 View基础知识 / 122
3.1.1 什么是View / 123
3.1.2 View的位置参数 / 123
3.1.3 MotionEvent和TouchSlop / 125
3.1.4 VelocityTracker、GestureDetector和Scroller / 126
3.2 View的滑动 / 129
3.2.1 使用scrollTo/scrollBy / 129
3.2.2 使用动画 / 131
3.2.3 改变布局参数 / 133
3.2.4 各种滑动方式的对比 / 133
3.3 弹性滑动 / 135
3.3.1 使用Scroller / 136
3.3.2 通过动画 / 138
3.3.3 使用延时策略 / 139
3.4 View的事件分发机制 / 140
3.4.1 点击事件的传递规则 / 140
3.4.2 事件分发的源码解析 / 144
3.5 View的滑动冲突 / 154
3.5.1 常见的滑动冲突场景 / 155
3.5.2 滑动冲突的处理规则 / 156
3.5.3 滑动冲突的解决方式 / 157
第4章 View的工作原理 / 174
4.1 初识ViewRoot和DecorView / 174
4.2 理解MeasureSpec / 177
4.2.1 MeasureSpec / 177
4.2.2 MeasureSpec和LayoutParams的对应关系 / 178
4.3 View的工作流程 / 183
4.3.1 measure过程 / 183
4.3.2 layout过程 / 193
4.3.3 draw过程 / 197
4.4 自定义View / 199
4.4.1 自定义View的分类 / 200
4.4.2 自定义View须知 / 201
4.4.3 自定义View示例 / 202
4.4.4 自定义View的思想 / 217
第5章 理解RemoteViews / 218
5.1 RemoteViews的应用 / 218
5.1.1 RemoteViews在通知栏上的应用 / 219
5.1.2 RemoteViews在桌面小部件上的应用 / 221
5.1.3 PendingIntent概述 / 228
5.2 RemoteViews的内部机制 / 230
5.3 RemoteViews的意义 / 239
第6章 Android的Drawable / 243
6.1 Drawable简介 / 243
6.2 Drawable的分类 / 244
6.2.1 BitmapDrawable / 244
6.2.2 ShapeDrawable / 247
6.2.3 LayerDrawable / 251
6.2.4 StateListDrawable / 253
6.2.5 LevelListDrawable / 255
6.2.6 TransitionDrawable / 256
6.2.7 InsetDrawable / 257
6.2.8 ScaleDrawable / 258
6.2.9 ClipDrawable / 260
6.3 自定义Drawable / 262
第7章 Android动画深入分析 / 265
7.1 View动画 / 265
7.1.1 View动画的种类 / 265
7.1.2 自定义View动画 / 270
7.1.3 帧动画 / 272
7.2 View动画的特殊使用场景 / 273
7.2.1 LayoutAnimation / 273
7.2.2 Activity的切换效果 / 275
7.3 属性动画 / 276
7.3.1 使用属性动画 / 276
7.3.2 理解插值器和估值器 / 280
7.3.3 属性动画的监听器 / 282
7.3.4 对任意属性做动画 / 282
7.3.5 属性动画的工作原理 / 288
7.4 使用动画的注意事项 / 292
第8章 理解Window和WindowManager / 294
8.1 Window和WindowManager / 294
8.2 Window的内部机制 / 297
8.2.1 Window的添加过程 / 298
8.2.2 Window的删除过程 / 301
8.2.3 Window的更新过程 / 303
8.3 Window的创建过程 / 304
8.3.1 Activity的Window创建过程 / 304
8.3.2 Dialog的Window创建过程 / 308
8.3.3 Toast的Window创建过程 / 311
第9章 四大组件的工作过程 / 316
9.1 四大组件的运行状态 / 316
9.2 Activity的工作过程 / 318
9.3 Service的工作过程 / 336
9.3.1 Service的启动过程 / 336
9.3.2 Service的绑定过程 / 344
9.4 BroadcastReceiver的工作过程 / 352
9.4.1 广播的注册过程 / 353
9.4.2 广播的发送和接收过程 / 356
9.5 ContentProvider的工作过程 / 362
第10章 Android的消息机制 / 372
10.1 Android的消息机制概述 / 373
10.2 Android的消息机制分析 / 375
10.2.1 ThreadLocal的工作原理 / 375
10.2.2 消息队列的工作原理 / 380
10.2.3 Looper的工作原理 / 383
10.2.4 Handler的工作原理 / 385
10.3 主线程的消息循环 / 389
第11章 Android的线程和线程池 / 391
11.1 主线程和子线程 / 392
11.2 Android中的线程形态 / 392
11.2.1 AsyncTask / 392
11.2.2 AsyncTask的工作原理 / 395
11.2.3 HandlerThread / 402
11.2.4 IntentService / 403
11.3 Android中的线程池 / 406
11.3.1 ThreadPoolExecutor / 407
11.3.2 线程池的分类 / 410
第12章 Bitmap的加载和Cache / 413
12.1 Bitmap的高效加载 / 414
12.2 Android中的缓存策略 / 417
12.2.1 LruCache / 418
12.2.2 DiskLruCache / 419
12.2.3 ImageLoader的实现 / 424
12.3 ImageLoader的使用 / 441
12.3.1 照片墙效果 / 441
12.3.2 优化列表的卡顿现象 / 446
第13章 综合技术 / 448
13.1 使用CrashHandler来获取应用的crash信息 / 449
13.2 使用multidex来解决方法数越界 / 455
13.3 Android的动态加载技术 / 463
13.4 反编译初步 / 469
13.4.1 使用dex2jar和jd-gui反编译apk / 470
13.4.2 使用apktool对apk进行二次打包 / 470
第14章 JNI和NDK编程 / 473
14.1 JNI的开发流程 / 474
14.2 NDK的开发流程 / 478
14.3 JNI的数据类型和类型签名 / 484
14.4 JNI调用Java方法的流程 / 486
第15章 Android性能优化 / 489
15.1 Android的性能优化方法 / 490
15.1.1 布局优化 / 490
15.1.2 绘制优化 / 493
15.1.3 内存泄露优化 / 493
15.1.4 响应速度优化和ANR日志分析 / 496
15.1.5 ListView和Bitmap优化 / 501
15.1.6 线程优化 / 501
15.1.7 一些性能优化建议 / 501
15.2 内存泄露分析之MAT工具 / 502
15.3 提高程序的可维护性 / 506


 Android开发艺术探索下载 精选章节试读 更多精彩书评



发布书评

 
 


精彩书评 (总计3条)

  •     之前市面上的书籍比较多的集中在两大类,一类Android开发,从搭建环境开始,到介绍四大组件,从面向初学者的《第一行代码》到更全面的《Android编程权威指南》等。另一类介绍Android系统,往往充斥很多C代码,阅读起来有很大难度。此书中介绍了更贴近上层的一些原理。比如View事件分发机制,View的绘制,还有Handler的原理等等。之前这些内容往往在别人博客中看到,未曾有实体书,而此书的出版很好的填补了这块的空白。它适合每个走在进阶路上的Android开发者去阅读。
  •     不得不说,这本书是一本从应用到Framework有深度解析的好书。不同于之前邓凡平等人的Android源码分析,这本书是从应用层出发,进而深入到Framework层,对JNI和C++涉及较少,非常适合应用开发工程师进阶。
  •     在红海中打出蓝海——4个月20000册的销量是如何来的记《Android开发艺术探索》全历程对于一本技术类图书来说,销售过万往往代表着图书的畅销,而能进开卷数据的图书则代表着这本书在其领域内的领先地位。近几年随着数字化对传统媒体的冲击,一本纸质书很难达到前几年的销量。阅读越来越碎片化和快餐化,读者的品味也越来越高。《Android开发艺术探索》这本书彻底颠覆了我对传统出版行业的认知——热爱知识、热爱分享、热爱读书的朋友仍然很多。我和玉刚(主席)相识于2年前的今天,最初是在CSDN看到了玉刚发表的一系列博文(Android开发小栈)而联系上的。虽然不懂技术,但由于编辑的职业敏感,我能感觉到玉刚是用心在写博客,他的博文内容不仅仅是记录自己的所学所得,同时也在分享自己的经验给博友,博友问的问题他也都能及时回复。肯用心写博客的人,写出来的书一定也不会差。最初和玉刚约稿的时候,玉刚并没有一口允诺,他在思考,因为他不想在没有idea的情况下就匆忙开始写书,这不仅是对读者的不负责任,也是对自己的不负责任。虽然现在有些人为了出书而写书,但真正热爱技术的人是不会贸然去出版一本书的——技术牛人都在意自己的品牌:)2014年的时候,市面上Android开发类的图书品种差不多有200种,除了国外几本经典的图书以外,大部分图书都是以入门为主,讲源码分析的图书也只有几本。当时很多读者都迫切需要一些高级进阶类的图书,尤其是读完就能切实提升开发水平的图书——这也是玉刚写书idea的出发点。由于玉刚在CSDN的影响力,邀请玉刚写书的出版社很多,有的出版社给玉刚的条件可能比我这边给玉刚的还有优势,但玉刚最终选择和我合作,我曾经问过玉刚,为什么从4家出版社的十几个编辑中选择了我?玉刚的回答很简单:因为我和他的目标一致,或者说我们对待图书的态度一致——我们都想出版一本有含金量的、对得起读者的图书。从确立写作意向到全书写完,大概经历了8个月的时间,这期间我每周都和玉刚保持至少1次的交流沟通,讨论写作的一些细节。为了能早日让图书上市,我并没有等全书都写完了才开始编辑,而是在玉刚写完一部分后(基本定稿)后就编辑一部分,这样大大缩短了出版的周期,从玉刚7月13日提交完最后一部分推荐序,到全书8月25日出版(日期也很巧,正好是我的生日),大概用了40天的时间。这个时期我们完成了对全书的编辑、排版、校对、申请书号、印制等一系列过程,通常的3个月出版周期,在各个环节紧密的配合下,缩短到了不到2个月!图书还没有上市的时候,很多读者通过微博、微信来询问这本书的情,CSDN、infoQ、互动等媒体也主动询问这本书什么时候上市,这足以说明这本书的受关注度。很多读者仅仅是看过本书目录之后,就在网店预定了这本书,由于京东自营店上架没有淘宝店快,所以很难得的出现了京东第3方点销量超过自营店的情况(首发3000册,其中有1100册销售自京东某第3方书店)。9月15日,图书上市仅仅一周,首印的3000就销售一空,从9月底到2016年1月10日,图书累计印刷6次,销量达20000册。并且图书还在持续热销中,京东【计算机与互联网销售榜】曾经排名第2,当当和亚马逊的排名也均在前列。这本书能这么火,究其原因,我觉得有几点:补了市场上的空白,成为为数不多的进阶类图书中的佼佼者;是Android入门者成为高级工程师的必备利器;书中提到的知识点也是BAT大公司面试时常问的问题。计算机图书市场的竞争很激烈,这几年随着数字化阅读的发展,读者花钱买纸质书的比例在逐年降低,曾经我也以为数字化阅读会逐步取代纸质化阅读,如今看来,至少最近几年的发展态势说明,优秀的出版物的畅销并不依赖于何种载体,决定出版物是否能得到读者认可的还是出版物本身的品质。互联网时代,资讯传播的速度是发散式的、爆炸式的,“酒香不怕巷子深”、“好书还得好吆喝”并不能制约一本书的传播。好的出版物,读者会帮作者、出版社去做广告,因为好的图书,受益者是多方的。在几乎已经饱和的计算机图书红海中,《Android开发艺术探索》打出了属于自己的一片蓝海。未来,我们要让艺术探索惠及更多的读者,5w乃至10w。作为编辑,有责任协助作者为国内技术的发展尽一份绵薄之力!最后做个硬广:介绍下我自己,陈晓猛,男,年方二八,身体健康、品正貌端,响应落实党中央十八大关于构建中国梦精神,出道伊始以回报社会助人为乐成人之美为己任。。。编不下去了,其实我是电子工业出版社的编辑,30多了,策划过几本书,心里还想着再多策划几本好书,愿意为作者和读者鞍前马后,只想着能为国内IT技术的发展发光发热。。。不说了,又要吹牛b了。PS:以下任何方式都能找到我,qq472954195,邮箱chenxm@phei.com.cn。

精彩短评 (总计46条)

  •     写作思路很清晰,赞。
  •     很显然,很容易,这个也很简单…… 作者的口头禅,已经到了丧心病狂的地步,都这么简单还看这个书做啥。 书是好书,语言上减一颗星。
  •     挺不错的,结合源码把很多知识点讲的挺透彻,值得一读!
  •     比较不错的书。对APP开发人员而言,framework层的原理讲的恰到好处。
  •     囫囵吞枣读完了,还需要再反复读,特别是源码解析的部分。写得十分详细,不过略深。
  •     快看完了,觉得算是国内写的不错的书,有细节有分析,而且不枯燥,就是代码贴的难看了点,作者说是高阶书籍,但是读完觉得中阶水平读者可能收获更高些。难度还不到高阶
  •     干货很多
  •     如果做Android一段时间,有了一定积累,又想全面系统的取得进阶,这本书很适合
  •     进阶
  •     其实这书是一个很尴尬的存在,基础的部分相比google官方的doc/tutorial没有明显的优势;所谓高级的部分其实就是把相关application framework层的代码简要解释一下,但是作者明显分析源码这方面功力不行,相关章节没有一个是真正能看的(没有重点,轻重混乱),甚至连demystify都做不到。最后八成是自己下了源码和书说goodbye。
  •     很好的一本android进阶书。
  •     适合入门后读。
  •     这个是进阶书,实际开发经验超过1年或以上,再来看,会比较好。一定程度上,可以放在桌面上,经常参考。好书。
  •     View, Drawable, 动画部分还不错,相关概念讲解的比较详细,推荐不熟悉这部分的人看。其他的部分:比如IPC,四大组件,线程消息循环,则是比较概括性的讲,【如果想深入了解这部分内容的话,推荐看罗升阳的《Android系统源码情景分析》很不错,注意不要深陷代码不能自拔,可以先看他的csdn博客很高质量】,最后的综合技术部分则比较浅,算是个入门介绍。作者在书中提到不少开发中需要注意的细节,一些坑的解决方案是比较有价值的。最后,看书是用来指导方向,要达到融会贯通还是需要去多读相关主题的源码,以及官方文档。还有就是口头禅比较多:“这个很简单”,“这个也很容易”,“这个很显然”,等等这些随意性的话语跟书的严谨性不搭。
  •     干货还是有一些的
  •     内容确实有干货,但是读起来让人有点恼火。 作者说话让人觉得好烦,能别说【这个不难实现】【这个很简单】【这个我们在之前实现过】balabala之类么,就当成我们已经知道了别提这些话了行不。 有些部分句子都读不通顺,逻辑让人觉得莫名其妙。还有,代码贴太多了。关键部分已经有了就别贴全部代码了,给个github地址让有需要的看就够了。 -------12.17 看完了这本书。中间一部分内容算是比较有价值的,其它的只能算是拼凑出来的。贴代码太多理所当然,讲优化讲不深,工具也没有说得多清楚,没有太多实践性的内容。这本书大概就是作者博客内容的大汇总。
  •     内容不错,不过作者语言能在组织好一点就更好了。
  •     作为进阶书籍不错的。
  •     有些地方写的不错是干货,有些地方又写的太浅
  •     这是一本很不错的书籍,合适Android进阶的人群阅读。
  •     书到手上时间不长,看了超过四分之一了,的确很棒但是也有难度,需要多读几遍,有些地方从来没仔细琢磨过,看了之后受益匪浅啊,继续熬夜看[哈哈][偷笑]
  •     全是拷的整页的代码凑页数,还没注释,然后原理性的东西就几句话就带过了。
  •     我可以说,这本书写的不好吗?内容枯燥,在博客上10分钟能理解的东西,非要写一堆。然后结果是你看了半小时还云里雾里。推荐大家看一下他的标题,然后去谷歌一下,会更快。
  •     老是想进阶,买过一些书。要么就是太初级,要么就是太深入从内核编译开始讲起。这本书可以带着去了解framework,不过读的时候还是要自己阅读源码才能有所得,否则还是看完忘,推荐应用开发工程师阅读
  •     这本书有点过誉了,作者贴了大量的Android源码,然后轻描淡写的说“从代码中我们可以看出…”,卧槽,你怎么那么容易看出来,或者说就算你看出来了,那你总得在代码附近写点注释吧?还有,买的正版书籍居然也能有这么多错误,有的句子都读不通顺,还有的句子居然前后是矛盾的
  •     都是android进阶过程中的核心知识点,作者原来也是百度手机安全卫士的研发人员,感觉技术功底浑厚,进阶必备,棒棒哒
  •     满满都是面试题,,,
  •     还可以.笔记还没有做完.一些内容官网上都有,大家懒得总结,作者总结了.还有作者实际开发过程中遇到的一些情况.总体来说,不错的书.
  •     Android 进阶的好资料书。
  •     不错。想了解源码的可以一看。
  •     虽然没有预期的好,但是还不错。
  •     有少量几处讲解抓不住重点,大段的解释不如来一张图清晰,可能因为作者对本书的定位,对很多底层原理没有深入讲解,但仍不失为一本内容和结构都不错的好书。
  •     草草翻了一遍,有内容,描述上可以更精炼,国产作品里面也算良心之作了吧。
  •     Art这个词烂大街了?
  •     学习android开发吃透官方文档和这本书基本可以独当一面了,对某些内容的深入探索
  •     中国人写的书越来越好了,中国加油
  •     看知乎上多人推荐,双11 5折入,刚翻了一下,确实不错。具体如何不错,且待我读完一遍,再做分析。 读完一遍后,确实受益匪浅。推荐给想要进阶的开发工程师。
  •     非常棒,用心制作
  •     // 以前就看了作者的CSDN,是个百度的大牛,做了动态加载的框架
  •     与其说是一本书,还不如说是一本提纲,涉及的话题很多,但是具体到每个话题,基本都泛泛而谈,一带而过。看目录就知道了,大部分都只有1页甚至半页内容。稍微多点的页,就是贴好几页的代码,8+的评分,是在逗我?
  •     非常优秀的一本书,把Android开发重要的几个基本面都讲解了一遍,也详细讲了实际开发中遇到的问题。真是Android界难得的一本好书,对作者的技术追求表示敬意。
  •     非常合适的进阶书籍,填补了市面上的Android书籍空白
  •     好书,干货足,用来进阶不错,从源码角度解释了不少重要类的工作原理
  •     说实话还不错,但是就我一人发现有那么多错别字吗?
  •     书还是挺不错的,里面有的内容不是很详细就需要读者自己深入学习,可以作为一个学习的提纲,献上自己的读书笔记: http://wujingchao.github.io/2016/03/05/关于<>读书笔记总结/
  •     大半年啃完了;初级后这本书算是一本挺不错的进阶
 

农业基础科学,时尚,美术/书法,绘画,软件工程/开发项目管理,研究生/本专科,爱情/情感,动漫学堂PDF下载,。 PDF下载网 

PDF下载网 @ 2024