Android Advanced advance笔记 -目录分析
1.Android 触摸事件传递机制
1.1.首先当然是类型了
1.2.然后就是传递过程中有哪几个阶段
1.3.View的传递机制
1.4.ViewGroup的传递机制
2.Android View 的绘制流程
2.1.首先当然是一个整体观了,就是整体流程
2.2.然后是一个测量中需要使用的一个参数MeasureSpec,根据这个参数决定视图的具体的长宽
2.3.第一步是Measure——测量
2.4.第二步是Layout——布局
2.5.第三步是Draw——绘制
3.Android 动画机制
3.1.首先当然比较传统一点咯——逐帧动画
3.2.然后就是xml文件方式使用的——补间动画
3.3.最后就是利用代码的方式来创建动画——属性动画(非传统动画)
4.Support Annotation Library使用详解
4.1.Nullness注解——这个应该是可以为空的意思
4.2.资源类型也是有注解滴...
4.3.类型定义的注解——比较自定义化吧
4.4.线程是非常重要的——线程类型的注解
4.5.RGB颜色值注解——主要是方便编译器识别吧
4.6.值范围注解——强调范围,保证不越界
4.7.权限注解——Android由于版本不同,权限机制会有所不同
4.8.重写函数注解——这个没怎么见过呢
4.9.返回值的注解——主要是给编译器识别
4.10.@VisibleForTesting——单元测试中可能会用
4.11.@Keep——不需要混淆
5.百分比库使用详解
这个没什么说的,主要是为了屏幕适配
6.Design Support Library 使用详解
6.1. 第一个是Snackbar——这是一个提示栏
6.2.第二个是TextInputLayout——浮动标签
6.3.第三个比较常见了TabLayout——用于分页效果
6.4.第四个——NavigationView左侧的导航栏
6.5.第五个是浮动按钮——FloatingActionButton
6.6.第六个是一个顶层的容器——CoordinatorLayout用于很多收缩效果
6.7.第七个是常用的标题栏——CollapingToolbarLayout
6.8.最后一个是底部动作条功能的——BottomSheetBehavior
7.Android Studio 的NDK开发
7.1.首先当然是ABI的基本概念了——这是NDK开发最基本的东西了
7.2.然后肯定会跟C/C++有一定关系的嘛——引入C/C++函数库
7.3.然后从C/C++源码编译也是很重要的
7.4.那使用.so文件需要注意哪些问题呢
8.Gradle必知必会
8.1.首先会有一个共享变量,这个用得比较多嘛
8.2.然后就是比较常见的通用配置了
8.3.然后就是aar函数库的使用方法
8.4.一般的话,签名和混淆也会用到gradler脚本,所以还是相当重要的
9.通过Gradle打包发布函数库到JCenter和Maven Central
9.1.首先了解一下什么是Maven Central和JCenter吧
9.2.然后就是Android Studio获取函数库的原理
9.3.最后当然就是上传函数库到JCenter了
10.Builder模式详解
10.1.首先当然是经典的设计模式——Builder模式
10.2.然后Builder的变种模式了解一下
10.3.而且这个变种还可以自动生成哦
10.4.最后再拿一个开源函数库为例讲解一下
11.注解在Android中的应用
11.1.首先当然是了解一下定义咯
11.2.那么标准注解有哪些呢
11.3.运行时也是可以有注解的
11.4.编译时当然也是可以有注解的哦
12.ANR产生原因及其定位分析
12.1.首先当然是了解一下原因啦
12.2.然后就是典型的ANR场景再现
12.3.然后概括一下ANR的定位以及分析原因啦
12.4.最后当然就是ANR问题的避免以及检测了
13.Android异步处理技术
13.1.首先当然是最常见的Thread了
13.2.HandlerThread也可以了解一下
13.3.AsyncQueryHandler异步处理技术,这个没见过哦
13.4.IntentService也是有的,和HandlerThread比较类似,加多了一个服务的概念了
13.5.还有Executor Famework,也没见过,可以了解一下
13.6.AsyncTask,轻量级异步处理类
13.7.Loader,加载器,可以看一下
13.8.最后来一个总结吧
14.Android数据序列化方案研究
14.1.首先是常见的Serializable了
14.2.Parcelable也是比较常用的
14.3.数据库方面使用——SQliteDatabase
14.4.文件存储其实也是自己序列化的——SharedPreferences
14.5.JSON——这个应该比较常见了,解析网络数据经常用
14.6.Protocol Buffers和Nano-Proto-Buffers,这个应该和缓存有关系,可以了解一下
14.7.FlatBuffers——也和缓存有关系的序列化方案,可能比较少见吧
15.Android WebView Java和JavaScript交互详解
15.1.首先是Java来调用JavaScript
15.2.其次当然是JavaScript来调用Java代码了
16.MVP模式及其在Android中的实践
16.1.首先当然是了解一下基本概念了
16.2.然后是面试经常问到的MVP和MVC模式的区别了
16.3.MVP有很多开源实现方案,可以了解一下
16.4.为什么使用MVP模式呢——即好处
16.5.MVP模式有缺点吗——当然有的啦
17.MVVM模式及Android DataBinding实战
17.1.用到MVVM模式肯定会接触数据绑定的表达式了
17.2.然后需要理解一下数据对象
17.3.当然要理解数据是如何绑定的啦,彼此要建立关联的嘛
17.4.其实事件也是可以绑定的哟
18.观察者模式的扩展:事件总线
18.1.为什么要使用事件总线呢——很多地方都会使用到
18.2.事件总线的原理——面试经常问到,一定要深入理解
18.3.事件总线有一些开源的实现,可以了解一下
18.4. 观察者模式和Android 广播以及上述的事件总线之前有很多关联的地方,简单了解一下吧
19.书写简洁规范的代码
19.1.Java有一套编码规范的哟
19.2.Android也有一套命名的规范
19.3.CheckStyle的使用,这个没见过哦,可以了解一下
20.基于开源项目搭建属于自己的技术堆栈
20.1.首先需要了解一下APP的整体架构——整体观
20.2.然后就是技术选择需要考虑的地方了
20.3.日志是非常关键的,记录成功或者失败
20.4.JSON解析也是比较常用的啦
20.5.数据库方面也是需要考量的
20.6.网络方面肯定离不开的啦
20.7.图片的缓存功能的实现以及显示方面也是需要注意的哦
21.64K方法数限制原理与解决方案
21.1.64K限制肯定有一定原因吧
21.2.MultiDex即可解决64K限制问题
21.3.如何避免这个问题,其实无法避免就不用刻意去避免了
21.4.配置MultiDex来解决这个问题
21.5.用MultiDex来解决有一定局限性,你知道吗
21.6.开发阶段如何处理这个问题
22.Android 插件框架机制研究与实践
22.1.插件化基本概念先了解一下吧
22.2.开源框架有很多哦
23.推送机制实现原理详解
23.1.首先了解一下推送的开源实现方案吧
23.2.第三方推送也是非常方便的
23.3.自己怎么实现一个推送功能呢
24.APP瘦身经验总结
24.1.研究一下APP为什么变庞大了——废话而已
24.2.当然APP的结构才是根本——先了解一下
24.3.图片的大小不可小觑
24.4.使用Lint工具可以删除无用资源——还是比较方便的
24.5.利用Android Gradle配置也是可以减少体积的哦
24.6.重构和优化代码就需要自己多花时间了
24.7.资源混淆往往可以减少一部分体积
24.8.插件化当然不用说了
25.Android Crash日志收集原理与实践
25.1.首先需要了解一下Java层的Crash捕获机制
25.2.Native层也是有Crash捕获机制的哦
25.3.最终当然就是Crash的上报了
26.函数式编程思想及其在Android中的应用
26.1.首先代码需要简化
26.2.然后要理解一下Operators,这个没听说过,可以简单了解一下
27.依赖注入及其在Android中的应用
27.1.首先需要了解一下依赖注入的基本概念
27.2.为什么需要一些框架来进行依赖注入呢
27.3.常见的依赖注入的框架有哪些呢
28.Kotlin在Android中的应用
28.1.首先了解一下为什么要选择Kotlin
28.2.了解一下Kotlin的安装和配置
28.3.Kotlin有哪些特性呢——简单了解一下即可
28.4.Kotlin需要Gradle的配置哦
28.5.Java类可以直接转换为Kotlin
28.6.相关资料可以了解一下
29.React Native For Android 入门指南
29.1.首先当然是环境配置了
29.2.Android开发的环境还是有一定要求的哦
29.3.React Native工程需要一些简单的配置
29.4.在AS下,浏览一下工程结构呗
29.5.将React Native依赖库修改为本地——可能是比较重要的吧
29.6.最后是一些学习建议——作者专门就搞React Native的,所以有一定的参考价值
30.Android在线热修复方案研究
30.1.首先了解一下在线热修复的基本流程
30.2.来一种热修复框架——Dexposed——这个应该比较热门的吧
30.3.再来一种热修复框架——AndFix——好像比较老,但是很牛逼的框架
30.4.再来一种更通用的框架——Nuwa——非常棒的热修复框架
30.5.最后来一个简单的总结
31.面向切面编程及其在Android中的应用
31.1.首先当然简单地了解一下AOP的基本概念了
31.2.什么时候用的切面编程呢
31.3.介绍一下框架了——AspectJ来实现Android平台的切面编程
31.4.其他AOP的开源的框架,可以简单了解一下
32.基于Facebook Buck改造Android构建系统
32.1.首先当然是Buck的环境配置了
32.2.然后就来一个基于Buck构建的Android工程呗
32.3.基本概念还是再了解一下嘛
32.4.然后升级一下,项目改造一下
32.5.当然自动化改造是更牛逼的啦
33.代码优化
33.1.首先是数据结构方面的选择
33.2.然后是Handler和内部类的选择啦
33.3.正确使用Context也是很关键的
33.4.要掌握Java四种引用方式哦
33.5.其他代码自己微微优化一下呗
34.图片优化
34.1.首先是图片格式的问题
34.2.然后是图片压缩的问题
34.3.最后是图片缓存的问题
35.电量优化
35.1.首先是广播接收器会占用大量电量,需优化
35.2.数据传输也会占用电量
35.3.后台的位置服务也会占用大量电量哦
35.4.闹钟服务也会占用电量的
35.5.WakeLock,不知道是啥,可以简单了解一下哦
36.布局优化
36.1.首先当然是include了
36.2.然后是ViewStub了——按需加载
36.3.然后是merge——减少视图层级
36.4.尽量使用CompoundDrawable,这个不知道哦
36.5.使用Lint,猜测是减少无用布局
37.网络优化
37.1.首先要避免DNS解析
37.2.可以合并网络氢气
37.3.可以预先获取数据的
37.4.要避免轮询
37.5.要优化重连机制
37.6.离线缓存也是需要做的
37.7.数据量大的话,还要压缩数据大小哦
37.8.超时策略应对不同网络环境
37.9.CDN可以了解一下,这个不知道哦
38.Android混淆机制详解
38.1.首先是Java代码混淆
38.2.然后是Native开发的C/C++的代码混淆
38.3.资源文件如果需要也是可以混淆的哦
39.Android反编译机制详解
39.1.首先资源文件的反编译比较方便
39.2.然后是Java代码的反编译,这个稍微复杂一点点
40.客户端敏感信息隐藏技术研究
40.1.将敏感信息放在strings.xml中如何
40.2. 放在Java源代码中也可以
40.3.隐藏在BuildConfig中
40.4.使用DexGuard——这个不知道哦,可以了解一下
40.5.对敏感信息进行伪装和加密,常用MD5加密
40.6.可以隐藏在.so文件中,这个不错嘛
40.7.对APK进行加固,没想到还有这个
41.Android加固技术研究
41.1.首先了解一下爱加密的主要功能
41.2.然后需要理解常见APP的漏洞和风险
41.3.然后需要了解Android程序的反破解技术
41.4.加固技术需要的一些工具和资料,简单了解一下即可
42.Android安全编码
42.1.首先是WebView远程代码的执行,没想到这个还涉及到了
42.2.WebView的密码明文保存,这个的确要考虑的
42.3.Android本地拒绝服务可以了解一下
42.4.SP文件方面——全局的任意读写,这个还是知道一点的
42.5.密钥硬编码,这个高大上哦
42.6.AES/DES/RSA弱加密,这个没听过
42.7.随机函数使用错误咋办...
42.8.WebView如何忽略SSL证书的情况下进行安全编码
42.9.HTTPS证书的弱校验——可以简单了解一下
42.10.PendingIntent使用不当下如何处理——这个也不清楚啦
43.Android调试工具Facebook Stetho
43.1.首先使用这个工具来监视视图布局
43.2.数据库也是可以监视的
43.3.网络更不用说啦,好像看到过别人框架中用过这个工具
43.4.dumpapp插件的使用——这个的确不知道
43.5.Javascript控制台,这样更方便使用了
43.6.简单实践一下,这个才是关键吧
44.内存泄漏检测函数库LeakCanary
44.1.基本概念简单了解一下
44.2.集成方法,非常简单哦
44.3.LeakCanary的基本原理,这个还是需要知道的哦
44.4.如何定制自己的LeakCanary呢——值的借鉴哦
45.基于Facebook Redex实现Android APK的压缩和优化
45.1.转换的时机,什么鬼?
45.2.管道的思想,类似于Linux中的管道通信吧
45.3.减少字节码的意义——简单了解一下即可
45.4.混淆和压缩,对APK有很大影响哦
45.5.如何使用内联函数,这个不知道哦
45.6.无用的代码消除——升级到代码层面了哦
45.7.Redex的集成和简单的使用
46.Android Studio 需要了解的功能
46.1.Annotate,不知道
46.2..ignore,应该比较简单吧
46.3.Live Template,模板,非常好用
46.4.如何集成Bug管理系统,这个应该不错呢
47.Android单元测试框架简介
47.1.首先是单元测试框架JUnit
47.2.还有Robolectric3.0,这个没听说过呢
47.3.Java来模拟测试框架Mockito,可以了解一下
48.Android UI自动化测试框架简介
48.1.首先是Monkey
48.2.MonkeyRunner可以了解一下
48.3.UIAutomator,这个用过,简单
48.4.Robotium,这个不知道了
48.5.Espresso,这个也比较常用,应该不错
48.6.Appium,母鸡啊
49.Android静态代码分析实战
49.1.Java代码规范检查工具CheckStyle,竟然还有这东西
49.2.Java静态代码分析工具FindBugs,这个牛逼了
49.3.Java静态代码分析工具PMD,可以看一下
49.4.Android代码优化工具Lint,前面好像有讲过呢
50.基于Jenkins+Gradle搭建Android持续集成编译环境
50.1.首先是Tomcat要知道
50.2.然后是下载Jenkins和安装
50.3.然后是Jenkins的全局配置
50.4.JOB的相关操作
50.5.最后是Jenkins预定义的环境变量,需要了解
浙公网安备 33010602011771号