腾讯音乐Android开发总监撰写,从事移动开发10余年,曾主导并参于过多款用户规模上亿的Android应用的开发工作
以流畅、稳定、省电、省流量4个方向为目标,从UI、内存、存储、稳定性、省电、安装包大小6个维度深入剖析性能优化的技术和方案
本书旨在用腾讯的亿级用户App的开发经验帮助你打造高质量的Android 应用。
从WinCE时代开始,作者从事移动应用开发10余年,现担任腾讯音乐Android平台的开发总监,主导并参于过多个用户规模上亿的Android应用开发工作,对Android应用开发有深刻的认识,特别在架构设计、性能优化等方面有丰富的实战经验。
本书从用户体验的角度,将性能问题总结为4类:
(1)快:流畅的操作体验
(2)稳:稳定
(3)省:省电、省流量
(4)小:安装包要尽可能小
导致出现这4类问题的原因可能是卡顿、内存使用不合理、代码质量差、代码逻辑不优秀、安装包过大等。本书从绘制(UI)、内存、存储、稳定性、耗电以及安装包6个方面深入讲解了性能优化具体涉及的技术以及优化方案,同时讲解了多种性能优化工具的使用。此外,还提供了典型的案例,帮助读者理解Android的运行机制和原理,掌握Android性能优化的思路和有效方法。
罗彧成,腾讯音乐Android开发总监,从事移动应用开发工作10余年,在Android、Linux、WinCE等平台上有丰富的开发经验。
对Android应用开发有深刻的认识,特别在架构设计、性能优化等方面有丰富的实战经验,主导并参于过多个用户规模上亿的Android应用开发工作。同时在车载网络、家庭网络协议方面也有丰富的开发经验。
曾在多个有影响力技术峰会发表过主题演讲。
更好的性能是软件开发人员长期不变的追求,在移动终端上尤其如此。本书是作者多年实际研发和优化经验的沉淀。他总结和分享的这些宝贵经验,能让读者少走许多弯路。
——张庆 腾讯音乐 技术总监
市面上关于Android开发的书籍不少,本书另辟蹊径,以性能优化为主线讲述Android开发的经验与心得。书中汇聚了作者长期从事QQ音乐等大规模Android应用开发工作积累的宝贵实战经验,推荐作为Android开发学习与思考的进阶读物。
——胡鹏 土巴兔装修网 技术总监
在同质化严重的移动应用市场,软件性能已成为提高用户留存率的关键问题。如何开发高性能的移动应用,此书做出了精彩的阐述,技术知识的传递不只有技术原理的讲述,更多是通过大量实践诱发读者的思考,推荐阅读。
——刘晨光 蓝信工场科技有限公司技术总监
前 言
第1章 Android Studio使用指南 1
1.1 Android Studio的优势 1
1.2 Android Studio使用入门 2
1.2.1 Android Studio安装 2
1.2.2 创建一个Android Studio工程 3
1.2.3 从Eclipse项目迁移到Android Studio 5
1.3 Android Studio实用技巧 7
1.3.1 代码管理 7
1.3.2 代码编辑技巧 8
1.3.3 调试技巧 10
1.4 本章小结 11
第2章 绘制优化 12
2.1 Android系统显示原理 13
2.1.1 绘制原理 13
2.1.2 刷新机制 16
2.1.3 卡顿的根本原因 20
2.2 性能分析工具 21
2.2.1 卡顿检测工具 22
2.2.2 TraceView 23
2.2.3 Systrace UI性能分析 26
2.3 布局优化 29
2.3.1 常用布局优化工具 30
2.3.2 布局优化方法 34
2.4 避免过度绘制 43
2.4.1 过度绘制检测工具 44
2.4.2 如何避免过度绘制 44
2.4.3 案例:无过度绘制View的实现 45
2.5 启动优化 49
2.5.1 应用启动流程 49
2.5.2 启动耗时监测 52
2.5.3 启动优化方案 56
2.6 合理的刷新机制 58
2.6.1 减少刷新次数 58
2.6.2 避免后台线程影响 59
2.6.3 缩小刷新区域 59
2.7 提升动画性能 60
2.7.1 帧动画 60
2.7.2 补间动画 60
2.7.3 属性动画 62
2.7.4 硬件加速 63
2.8 卡顿监控方案与实现 66
2.8.1 监控原理 67
2.8.2 代码实现 68
2.9 本章小结 79
第3章 内存优化 80
3.1 Android内存管理机制 81
3.1.1 Java对象生命周期 81
3.1.2 内存分配 82
3.1.3 内存回收机制 84
3.1.4 GC类型 86
3.2 优化内存的意义 87
3.3 内存分析工具 90
3.3.1 Memory Monitor 90
3.3.2 Heap Viewer 91
3.3.3 Allocation Tracker 94
3.4 避免内存泄漏 96
3.4.1 内存泄漏定义 97
3.4.2 使用MAT查找内存泄漏 97
3.4.3 常见内存泄漏场景 103
3.4.4 内存泄漏监控 106
3.5 优化内存空间 109
3.5.1 对象引用 109
3.5.2 减少不必要的内存开销 110
3.5.3 使用最优的数据类型 112
3.5.4 图片内存优化 117
3.6 图片管理模块设计与实现 120
3.6.1 实现异步加载功能 121
3.6.2 实现三重缓存 130
3.6.3 开源图片组件 140
3.7 本章小结 142
第4章 存储优化 144
4.1 存储方式 144
4.1.1 SharedPreferences 145
4.1.2 文件存储 145
4.1.3 SQLite(需要扩展) 146
4.1.4 ContentProvider 147
4.2 序列化 147
4.2.1 Serializable与Parcelable 148
4.2.2 Gson实现JSON的序列化和反序列化 148
4.2.3 Nano Proto Buffers 149
4.2.4 FlatBuffers 149
4.2.5 小结 150
4.3 SharedPreferences优化 150
4.4 数据库使用及优化 151
4.4.1 数据库实现 152
4.4.2 数据库优化 157
4.5 本章小结 161
第5章 稳定性优化 162
5.1 提高代码质量 162
5.1.1 代码审查 163
5.1.2 代码静态扫描工具 166
5.2 Crash监控 168
5.2.1 Java层Crash监控 168
5.2.2 Native层Crash监控 171
5.2.3 Crash上报机制 173
5.3 ANR剖析 173
5.3.1 ANR介绍 173
5.3.2 ANR分析 174
5.3.3 ANR监控 176
5.4 提高后台进程存活率 178
5.4.1 应用进程优先级 178
5.4.2 利用SyncAdapter提高进程优先级 180
5.5 本章小结 183
第6章 耗电优化 184
6.1 耗电检测工具 184
6.2 三大模块省电优化 187
6.2.1 显示 187
6.2.2 网络 188
6.2.3 CPU 189
6.3 应用常用优化方案 191
6.3.1 计算优化 191
6.3.2 避免WakeLock使用不当 192
6.3.3 使用Job Scheduler 193
6.4 Doze模式 197
6.4.1 Doze模式介绍 197
6.4.2 Doze模式应用策略 198
6.4.3 测试Doze模式应用工作状态 199
6.5 本章小结 199
第7章 安装包大小优化 200
7.1 应用装包的构成 200
7.2 减少安装包大小的常用方案 203
7.2.1 代码混淆 203
7.2.2 资源优化 204
7.2.3 其他优化 206
7.3 本章小结 207
结束语 208
为什么写这本书一个好的应用,除了要有吸引人的功能和交互之外,在性能上也应该有高的要求,即使应用非常具有特色,或者功能和业务具有唯一性,在产品前期可能吸引了部分用户,但用户体验不好的话,也会给产品带来很差的口碑,如果有在体验上更好的竞品,用户也会很快转移。那么一个好的应用应该如何定义呢?主要有三方面:
业务/功能符合逻辑的交互优秀的性能众所周知,Android系统作为以移动设备为主的一款操作系统,硬件配置有一定的限制,虽然配置现在越来越高级,但仍然无法和PC相比,在CPU和内存上的使用不合理或者耗费资源多时,就会碰到内存不足导致的稳定性问题、CPU消耗太多导致的卡顿问题等。例如,我们发布一款产品后会收到很多的反馈,这些反馈来自很多渠道,有用户反馈,有应用发布平台的反馈通道等。
面对这些问题时,大家想到的都是联系用户,然后看日志,特别是有关性能类问题的反馈,原因也非常难找,日志大多用处不大,为什么呢?因为性能问题大部分是非必现的问题,定位时很难复现,而又没有关键的日志,当然就无法找到原因了。这些问题非常影响用户的体验和功能的使用,所以解决这些问题是非常重要的。当前市场上讲解性能优化的书太少,即使有些书讲到,很多也是一笔带过,没有深入分析和寻找解决方案,所以有必要用一本书来从多个维度讲解在性能上我们面临了什么问题,如何解决这些问题,并在实际的项目中来优化我们的应用,以提高用户体验。
本书面向的读者本书适合所有Android应用开发从业人员及在校学生,特别是有一定Android应用开发经验的开发人员,高级开发人员也可以通过本书了解更多的性能调优知识。
本书特色本书为进阶类图书,对于一些基础技术和基础理论知识不会做过多的阐述,特别是入门类的知识点,大家可以从其他书籍获取相关的知识。书中以性能优化为核心,深入剖析性能优化具体涉及的技术背景与优化方案,同时提供典型案例,帮助读者更深入地掌握Android应用开发技术,理解Android的运行机制和原理,掌握Android性能优化的思想,让开发者快速成长,打造高质量的Android应用。
本书的主要内容可以把用户能体验到的性能问题主要总结为4个类别:
流畅稳定省电省流量性能问题的主要原因是什么,原因有相同的,也有不同的,但归根结底,不外乎内存使用、代码效率、合适的策略逻辑、代码质量这一类问题。本书讲解内容的目标和方向如下图所示。
从上图可以看到,打造一个高质量的应用应该以4个方向为目标:快、稳、省、小。
快:使用时避免出现卡顿,响应速度快,减少用户的等待时间,满足用户预期。
稳:降低crash率和ANR率,不要在用户使用过程中崩溃和无响应。
省:节省流量和耗电,减小用户使用成本,避免使用时导致手机发烫。
小:安装包小可以降低用户的安装成本。
这4类问题需要从根源上解决,也就是要解决图中第二个框里的问题:卡顿、内存使用不合理、代码质量差、代码逻辑不优秀、安装包过大。这些问题也是在开发过程中碰到最多的问题,在实现业务需求的同时,也需要考虑到这些点,多花时间去思考,避免功能完成后再来做优化和修复Bug,这个时候带来的成本会增加。如果是维护之前的代码,就需要使用一系列工具来发现问题点。
性能优化不是更新一两个版本可以解决的,是持续性的需求,结合到实际中,在一个新产品/项目开始时,由于人力和上线时间的限制,可以把优先级放低,但有些点是在写代码时就要考虑的,这就体现出程序员的技术功底。
本书强调性能调优的核心思想和方向如下:
发现问题→分析问题原因及背景→寻找最优解决方案→解决问题。
本书一共7章,在简单介绍了Android Studio的使用指南后,分别从绘制(UI)、内存、存储、稳定性、耗电以及安装包6个方面进行优化,从系统上深入分析绘制和内存的原理,一步步深入了解导致性能问题的本质原因,同时讲述了多种性能优化工具的使用,通过分析典型案例,得到有效的优化方案,从而实现更高质量的应用。书中所讲述的内容均基于Android 6.0系统。
勘误和资源下载由于写作时间实在有限,在书稿交付时仍有些许不安,为此先为此书可能存在的错误或者描述不清楚的地方致以真诚的歉意,如果你发现此书存在瑕疵或者有任何建议,请发邮件到5482586@qq.com,我会尽快回复,非常期待大家的反馈。
本书代码的下载地址:https://github.com/lyc7898/AndroidTech。
致谢由于时间的问题,本书写作时间非常长,非常感谢杨福川编辑对我的鼓励和宽容,并且分享了非常有用的碎片化写作方法,使我一直坚持把本书写完。同时感谢李艺编辑的校对和勘误,才完成了这本图文并茂、格式清晰的技术书籍。
感谢我的妻子李萍女士对我的理解和支持,在我几乎将所有的时间投入工作中时一直给予最大的宽容和鼓励,使我每天即使再忙再累时仍然可以回到温馨的家。同时感谢我的父母和岳父母,感谢他们对我无私的帮助,他们都是伟大的父母。
特别感谢我的爷爷罗志华老先生,在我的学习生涯中给予的无私帮助,在工作和生活上的谆谆教诲。还要感谢刘景瑜老师,在求学阶段的鼓励和教诲,告诉我有很多需要去做的事情。
最后感谢我现在工作的公司,在这里我得到了最快的成长,学习到非常多的东西,感谢公司领导及所有同事,在这里工作,能感受到大家每天都在成长。
我一直认为,性能优化是Android开发中最具挑战性也最能体现开发者功力的领域之一。这本书的到来,简直就像在茫茫的知识海洋中为我点亮了一盏明灯。在阅读之前,我对于性能优化的理解,更多地是停留在一些零散的技巧和经验总结上,缺乏一个系统性的理论框架和深入的原理剖析。这本书则彻底改变了我的认知。 作者的叙述方式非常独特,他并没有上来就堆砌晦涩的技术术语,而是先从用户体验的维度,深刻地阐述了性能对一个应用生死存亡的影响。他用生动的比喻,比如将一个启动缓慢的应用比作一个“迟迟不肯开门的店铺”,立刻就能引起读者的共鸣。这种从“为什么”出发的叙述方式,让我能够更好地理解“怎么做”的必要性,也让我对性能优化这个话题产生了浓厚的兴趣。 书中对Android四大组件生命周期与性能的关系进行了深入的解读。我之前一直对Activity、Fragment的生命周期管理有些模糊,经常因为不恰当的生命周期回调而导致内存泄漏或者不必要的资源浪费。这本书通过精细的图示和代码示例,详细讲解了每个生命周期阶段应该做什么,不应该做什么,以及如何正确地管理资源。特别是对Fragment的懒加载和视图销毁的讲解,让我豁然开朗,解决了困扰我很久的问题。 让我惊喜的是,这本书还对Android的UI渲染机制进行了非常深入的剖析。我一直对View的绘制过程感到有些神秘,而这本书则一步步地揭开了它的面纱。从measure、layout到draw,每一个环节都讲解得清晰明了。作者还提供了各种实用的优化技巧,比如如何减少View的层级、如何利用`ConstraintLayout`来构建扁平化的UI,以及如何避免过度绘制。我尝试着将这些技巧应用到我的项目中,UI的滑动确实变得更加流畅了。 这本书不仅仅是提供了技术上的指导,更重要的是,它培养了我一种“性能思维”。我开始能够在编码的过程中,主动去思考代码的性能影响,去权衡不同的实现方案,去主动地寻找和解决潜在的性能瓶颈。这本书就像一位睿智的导师,不仅教授我解决问题的具体方法,更重要的是,它教会了我如何去思考和分析问题。我强烈推荐这本书给每一位渴望提升Android应用性能的开发者。
评分这本书的出现,无疑填补了我一直以来在Android性能优化领域知识体系中的一块空白。一直以来,我对性能优化的理解都停留在一些零散的经验和网上的只言片语,缺乏系统性的认知。这本书则系统性地梳理了Android应用性能优化的方方面面,从基础的内存管理,到复杂的并发处理,再到网络通信和UI渲染,几乎涵盖了所有可能影响应用性能的关键点。作者的逻辑非常严谨,他首先会阐述某个优化方向的重要性,然后深入分析其背后的原理,最后给出具体可行的解决方案。 例如,在讲解多线程和并发时,我之前一直对`ThreadPoolExecutor`的使用感到有些困惑,经常不知道如何设置合适的线程池大小和队列。而这本书则提供了一个非常清晰的框架,帮助我理解不同场景下应该如何选择合适的线程池策略,以及如何避免常见的并发问题,如死锁和竞态条件。作者通过大量的代码示例,将理论与实践紧密结合,让我能够亲手去验证和感受这些优化措施的效果。 此外,书中对Android SDK底层机制的剖析也让我大开眼界。对于一些我们日常开发中习以为常的API,作者都进行了深入的源码级别的解读,揭示了它们在性能方面的考量。比如,在讲解`Activity`的启动流程时,书中详细分析了`ActivityThread`、`Instrumentation`等核心组件的作用,以及它们如何协同工作来完成一个应用的启动。这种底层原理的讲解,让我能够更深层次地理解为什么某些操作会影响性能,以及如何从更根本的层面去优化。 这本书的另一个亮点在于其对“功耗优化”的重视。在许多性能优化书籍中,往往只关注CPU和内存,而这本书则将功耗也作为一个重要的性能指标来对待。作者详细讲解了如何通过合理的网络请求策略、后台任务管理、以及传感器使用等方式来降低应用的能耗,这对于提升用户体验至关重要,尤其是在移动设备上。 总的来说,这是一本非常全面且深入的Android性能优化指南。它不仅仅是告诉“怎么做”,更是教会“为什么这么做”,让我能够形成一套完整的性能优化思维体系,而不是停留在“知其然,不知其所以然”的层面。对于希望提升Android应用质量的开发者来说,这本书绝对是不可多得的宝藏。
评分这本书真是出乎我的意料!我本来以为会是一本枯燥的技术手册,充斥着各种晦涩难懂的API和算法。但当我翻开第一页,就被作者生动的语言和清晰的逻辑深深吸引住了。他并没有直接抛出大量代码,而是先从用户体验的角度出发,娓娓道来为什么性能优化如此重要,以及它对应用成功与否的直接影响。例如,在介绍启动速度时,作者举了一个非常贴切的例子,将缓慢的应用启动比作一位迟迟不肯开门的店主,让焦急的顾客望而却步。这种代入感极强的描述,让我立刻意识到性能优化并非仅仅是程序员的“技术活”,更是关系到用户留存和商业价值的关键。 接下来的章节,作者更是将抽象的概念具象化,通过图示和案例,将复杂的内存管理、CPU调度、网络请求等原理讲得透彻明白。我尤其喜欢他对“垃圾回收”(GC)机制的讲解,没有直接堆砌GC算法的细节,而是用一个生动的故事来比喻,解释了JVM如何在后台默默地“清理”无用的内存,以及我们如何通过一些简单的代码习惯,来“帮助”GC更高效地工作,从而减少应用的卡顿和耗电。书中提供的很多优化技巧,看似微小,但作者都给出了详实的论证,说明了它们如何累积起来,最终带来巨大的性能提升。读完这些章节,我感觉自己对Android应用的运行机制有了前所未有的深刻理解,仿佛打通了任督二脉。 更让我惊喜的是,这本书的实用性极强。作者不仅仅停留在理论层面,还提供了大量可以直接套用的代码示例和最佳实践。比如,在讲解UI渲染优化时,书中详细列举了如何通过减少过度绘制、合理使用布局文件、优化视图层级等方式,让应用的界面流畅如丝。我尝试着将书中的一些方法应用到我正在开发的项目中,效果立竿见影!原本有些卡顿的列表滑动变得丝滑无比,页面切换也更加迅速。而且,作者还推荐了一些实用的性能分析工具,并教会我们如何利用这些工具来定位性能瓶颈,而不是盲目地进行优化。这种“授人以渔”的教学方式,让我受益匪浅,感觉自己真的掌握了一套解决性能问题的“武功秘籍”。 除了技术层面的深度,这本书在编写风格上也别具一格。作者的语言幽默风趣,常常穿插一些业内梗和生活化的比喻,让原本可能枯燥的技术话题变得轻松有趣。即使是讲解一些比较抽象的概念,也能被他讲得深入浅出,引人入胜。我时不时会在阅读过程中会心一笑,感觉像是在听一位经验丰富的前辈在分享他的心得体会,而不是在阅读一本冷冰冰的技术书籍。这种轻松愉快的阅读体验,让我能够更专注地投入到内容中,并且更容易消化和吸收知识。 总而言之,这本书绝对是我近年来读过的最棒的Android技术书籍之一。它不仅提供了扎实的理论知识和实用的优化技巧,更重要的是,它改变了我对性能优化的看法,让我认识到性能不仅仅是代码层面的追求,更是用户体验和产品生命力的基石。无论你是Android开发的初学者,还是经验丰富的开发者,都能在这本书中找到属于自己的宝藏。强烈推荐给所有热爱Android开发,并追求极致用户体验的朋友们!
评分我一直认为,应用的性能就像是产品的“内功”,虽然用户不一定能直接看到,但它的好坏直接决定了用户能否“走得更远”。这本书就为我揭示了这套“内功心法”。作者并没有一开始就抛出那些让人头晕的性能指标,而是从一个用户的视角出发,生动地描绘了不同性能表现的应用带给用户的感受差异。他用形象的比喻,比如“卡顿的应用就像一个迟缓的机器,让用户耐心耗尽”,让我对性能优化的重要性有了更深刻的共鸣。 书中对内存泄漏的讲解尤为精彩。我之前一直对如何有效地检测和避免内存泄漏感到头疼,这本书则提供了一套完整的解决方案。作者不仅介绍了如何使用Android Studio自带的内存分析工具,还深入分析了各种常见的内存泄漏场景,并给出了相应的规避措施。比如,他详细讲解了`Context`的生命周期与内存泄漏的关系,以及如何通过弱引用(WeakReference)等方式来避免不必要的对象持有。这些讲解深入浅出,让我能够清晰地理解问题的根源,从而更有效地去解决。 让我印象深刻的还有关于UI渲染性能的部分。作者用大量的图示和动画来解释View的绘制流程,以及如何通过优化布局结构、减少过度绘制来提升UI的流畅度。我之前总是习惯性地堆叠层级复杂的布局,而这本书则教会我如何通过扁平化布局、使用`ConstraintLayout`等现代化的布局方式来优化。读完这一部分,我感觉自己对UI性能的理解上升了一个新的台阶,能够更敏锐地发现UI中的性能瓶颈。 这本书的价值远不止于技术层面。作者在书中穿插了一些关于工程实践的思考,比如如何将性能优化融入到开发流程中,以及如何与其他团队成员协作来共同提升应用性能。这种宏观的视角,让我意识到性能优化不是一个孤立的任务,而是需要整个团队共同努力才能达成的目标。 总而言之,这是一本集理论深度、实践指导和工程思考于一体的优秀书籍。它不仅教会我如何写出性能更好的代码,更重要的是,它培养了我对性能优化的敏锐度和系统性思维。我迫不及待地想将书中学习到的知识应用到我的实际工作中,打造出更加流畅、响应迅速的Android应用。
评分当我拿到这本书的时候,我抱着一种“救命稻草”的心态。最近接手的项目,用户反馈卡顿的问题越来越严重,每次代码审查,都会有人提到“性能”两个字,但我总觉得摸不着头脑,优化得零零散散,效果甚微。这本书的封面就写着“最佳实践”,让我眼前一亮,期待它能给我指点迷津。 一打开书,我就被作者的文笔吸引了。他不是那种枯燥地罗列API和参数的程序员,而是像一位经验丰富的老师傅,用非常生动形象的比喻来讲解那些听起来就很“硬核”的技术点。比如,他把CPU的调度比作一个繁忙的“服务员”,需要高效地为不同的“客人”(线程)服务;又把内存比作一个“仓库”,需要合理地管理“货物”(对象)的进出,防止“堆积如山”造成混乱。这种描述,瞬间就拉近了我与技术之间的距离,让我觉得那些复杂的概念不再那么难以理解。 让我感到惊喜的是,书中对“位图(Bitmap)”的优化讲解。我之前在使用图片的时候,经常遇到OOM(Out of Memory)的问题,虽然知道要压缩图片,但具体怎么压,压到什么程度,效果最好,一直没有一个清晰的概念。这本书则详细讲解了位图的加载、解码、复用等核心原理,并提供了各种实用技巧,比如使用`BitmapFactory.Options`来设置采样率,以及如何利用`BitmapPool`来复用位图对象,大大减少内存的占用。我按照书中的方法实践了一下,之前容易崩溃的应用,现在稳定了很多。 这本书还有一个让我觉得特别之处在于,它不仅关注了“快”,也关注了“省”。“快”通常指的是应用的响应速度和流畅度,“省”则包含了省电、省流量等。作者在书中花了不少篇幅来讲解如何优化网络请求,减少不必要的流量消耗,以及如何通过合理的后台任务调度来降低电量消耗。这对于一款面向大众用户的APP来说,是非常重要的考量因素。 总的来说,这本书就像一本“武功秘籍”,它不仅仅是传授了招式,更是讲解了内功心法。我不再是被动地去解决某个性能问题,而是能够主动地去思考如何设计出性能更好的架构,如何规避潜在的性能风险。对于任何一个想要写出高品质Android应用的开发者来说,这本书都绝对是值得收入囊中的。
评分书中内容还可以,值得一看
评分书给公司买的 作为程序员 我觉得这书买的值!书很棒!而且是本版 京东物流名不虚传 第二天就到了
评分很有用的书,发货速度很快!
评分买来看看哈哈哈
评分还没看 希望是一本好书
评分i开始考试劳斯莱斯开始没撒没撒溜达理发没v看
评分自动化...,只是好奇看了下目录
评分京东一如既往的好,全五星
评分比超市便宜,物流给力,服务态度很好,比较喜欢,快递特别表扬一下,送货上门,很不错。
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 book.teaonline.club All Rights Reserved. 图书大百科 版权所有