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源码分析

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,734评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,931评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,133评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,532评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,585评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,462评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,262评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,153评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,587评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,792评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,919评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,635评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,237评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,855评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,983评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,048评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,864评论 2 354

推荐阅读更多精彩内容