Android技术栈和经验

1.开发工具

Android Studio

Gradle 构建

1.Gradle 版本配置和版本升级,gradle 采用wrapper方式。可以做到每个项目独自使用gradle版本。gradle/wrapper/gradle-wrapper.properties并修改distributionUrl=https://services.gradle.org/distributions/gradle-3.0-all.zip到你想升级的版本。

2.构建模块化项目配置org.gradle.parallel=true

3.配置签名信息

4.设置第三方maven 地址

5.Gradle 拆分及引用 apply from:"../resource/config.gradle"

6.全局变量定义及引用

7.AndroidManifest占位符,BuildConfig以及资源配置

8.aar本地库依赖

Android sdk 编译版本,support,主题

1.compileSdkVersion:编译版本,控制可以使用的 API 。不会被包含到 APK 中,minSdkVersion :最低兼容版本,targetSdkVersion:应用运行时使用的版本,即使使用了高版本API也不会生效。

2.主题Hoho Theme:4.0之前。在4.0之后Android推出了Material Design的概念

3.v4 v7 v13

1)support-v4 : 该系列包用在API Level 4(即Android 1.6)或者更高版本以上。在开发中,默认都会使用到这个包。

2)support-v7 : 该系列包是为了考虑在API level 7(Android 2.1)及以上使用高版本效果而设计的,v7包含了v4的所有效果(v7中包含v4包的,即v7依赖于v4),v7当中支持了很多新的效果,最新的版本中还支持了Material Design的多种新的布局和空间。比如说:RecyclerView、TabLayout、ToolBar、CardView等等新的包。

3)support-v13 : 该兼容包系列主要是为了兼容API level 13(Android 3.2)以上的,是为了针对于平板兼容开发的,由于平板屏幕较大,因此该系列增强的对Fragment效果的支持,使得Fragment能够在平板的各个版中兼容(一般手机开发者不用该包)。

4)v14(兼容4.0及以上)

5)v17(兼容4.2及以上)主要是为了支持电视设备,并为电视设备提供了一系列的组件。

2.项目架构

App应用

扩展功能模块

功能库Library Common Library 工具库

3.View 的绘制

View的绘制流程&Activity的生命周期。在ActivityThread中,通过attache初始化window,将decorview添加进去。创建viewRootImpl对象,view 的绘制流程首先开始于ViewRootImpl的performTraversals方法。经过三大过程。Measure、layout、draw。而在Activity时通过onCreate()方法中调用setContentView();

setContentView 的源码分析和SnackBar 分析

View和ViewGroup的绘制原理源码分析。

4.事件分发

涉及分发及核心

么整个事件流向应该是从Activity---->ViewGroup--->View 从上往下调用dispatchTouchEvent方法,再由View--->ViewGroup--->Activity从下往上调用onTouchEvent方法。

5.动画框架

逐帧动画

补间动画

属性动画

(1)ValueAnimator:包含了属性动画的核心功能,动画时间,开始和结束属性值计算方法等,这个类也是属性动画的基类。

(2)ObjectAnimator:继承自ValueAnimator,其实如果要改变一个事物的某个属性变化会比较经常用到这个方法。

(3)AnimationSet:用于组合多个动画的,可以设置要组合动画的时序关系。

(4)TypeEvalutors:都是翻译成估值器,其实就是计算下一个运动到的值的类(根据动画的开始和结束还有TimeInterpolation计算出当前时间的属性值)

(5)TimeInterplator:这个翻译都是插值器,他是一个描述运动变化的方式,如匀速运动,加速运动或者先加速后减速等,他有很多子类,待会会介绍。

(6)ViewPropertyAnimator:这个类其实就是对View做属性动画的一个简略版,有些情况用到这个会简单很多。

6.Handler机制

1)Handler,MessageQueue,与Looper三者关系分析

2)HandlerThread源码分析

3)IntentService源码分析

4)Handler常见应用场景和常见问题分析

7.Binder机制

Binder是一种跨进程的通信方式;

从Android Framework层来说,Binder是ServiceManager连接各种Manager和相应ManagerService的桥梁;

8.流行框架源码分析

1)EventBus3.0源码解析

2)AsynTask源码分析

3)编译期注解的使用例子分析

4)Butterknife源码分析(一)

5)Butterknife源码分析(二)

6)多进程的sharedprefrence解决方案DPreference

7)Volley源码解析

8)OkHttp源码分析

9)Builder建造者设计模式

10)Retrofit2源码解析

11)Observer观察者设计模式

12)责任链设计模式

13)Strategy策略模式

14)Decorator装饰模式

15)GreenDao3.0数据库

9.性能优化

1)冷启动优化

  1.1.APP启动分析工具(TraceView,Systrace)

  1.2.布局优化(扁平化,Merge的使用,ViewStub的使用)

  1.3.APP启动速度优化实例解析

  1.4.各种布局的性能对比(LinerLayout,RelativeLayout)

2)内存优化

  2.1.LeakCanary原理分析

  2.2.Android DiskLruCache 源码解析 硬盘缓存的绝佳方案[转]

  2.3.LruCache源码分析

  2.4.内存泄漏的一些坑

  2.5.MAT内存泄漏分析(一)

  2.6.MAT内存泄漏分析(二)

3)网络优化

4)图片压缩性能优化

5)数据传输性能优化

6)减小APK体积

7)渲染优化

  7.1.UI卡顿原理分析

  7.2.UI卡顿检测分析

  7.3.BlockCanary原理分析

  7.4.卡顿优化实例解析

8)电量优化

  8.1.APP耗电分析方法与工具(第三方,Google官方Battery Historian)

  8.2.Android Doze源码分析

  8.3.AlarmManager研究 [转]

  8.4.在Android Lollipop中使用JobScheduler

9)Android ANR在线监控原理

10)AndroidGodEye解析之帧率(fps)

11)AndroidGodEye解析之流畅度(sm)

10.网络编程

1.TCP问题分析

2.OkHttp源码分析

3.网络传输数据加密策略(对称加密AES,DES,非对称加密RSA)

4.二进制协议(mqtt协议),协议编解码(tlv编解码)

5.Java Socket编程(IO,NIO)

6.Java多线程编程(队列,同步锁,线程池)

11.FrameWork层源码的分析

1)应用程序内Activity的启动流程

2)startService的流程分析

3 ) 注册广播接收器的源码分析

4)广播发送过程源码解析

5)广播处理过程源码解析

6)AssetManager加载资源过程

7)ClassLoader及dex加载过程

8)插件化框架VirtualApk之初始化

9)插件化框架VirtualApk之插件加载

10)插件化框架VirtualApk之Activity启动

11)插件化框架VirtualApk之Service管理

12)热修复框架AndFix完全解析

13)InstantRun源码分析

你可能感兴趣的:(Android技术栈和经验)