android技术图谱
2019-07-23 10:52:35 0 举报
AI智能生成
android技术图谱,从入门到放弃
作者其他创作
大纲/内容
数据机构
栈和队列
数组和链表,自定义一个动态数组
Hash表,及Hash冲突的解决
二叉树
B+ B-树
基础排序算法和时间复杂度
快排
归并排序
堆排序
桶排序
快排的优化
二分查找法
哈夫曼树、红黑树
字符串操作,字符串查找,KMP算法
图的BFS、DFS、prim、Dijkstra算法(高阶技能
经典问题:海量数据的处理 (10亿个数中找出最大的10000个数 TOP K问题)
算法
分治算法
动态规则
贪心算法
分支界限法
设计模式
反射机制,代理模式
开闭原则
里氏替换原则的定义
依赖导致原则
单一职责原则的定义
接口隔离原则
迪米特法则
合成复用原则
创建型模式的特点和分类
单例模式
懒汉模式
饿汉模式
原型模式
建造者模式
代理模式
移动开发外围
服务器开发相关
SpringBoot技术
Restful API开发
网络协议理解:TCP/IP、HTTP/HTTPS、OSI七层协议
授权认证协议: OAuth2.0 等
基本的数据库技术
数据缓存技术:Memcached、Redis,Web缓存原理
消息队列技术
监控、日志分析技术
Restful API开发
网络协议理解:TCP/IP、HTTP/HTTPS、OSI七层协议
授权认证协议: OAuth2.0 等
基本的数据库技术
数据缓存技术:Memcached、Redis,Web缓存原理
消息队列技术
监控、日志分析技术
前端开发相关
性能分析工具:Memory Monitor
性能追踪及方法执行分析: TraceView
视图分析:Hierarchy Viewer
ApkTool- 用于反向工程Android Apk文件的工具
Lint- Android lint工具是一个静态代码分析工具
Dex2Jar- 使用android .dex和java .class文件的工具
性能追踪及方法执行分析: TraceView
视图分析:Hierarchy Viewer
ApkTool- 用于反向工程Android Apk文件的工具
Lint- Android lint工具是一个静态代码分析工具
Dex2Jar- 使用android .dex和java .class文件的工具
java基础
基础数据结构
内存占用
hashMap原理,hash冲突,并发集合,线程安全以及实现原理
hashmap和hashtable区别
hashCode作用,如何重载hashCode方法
ArrayList,LinkList区别
GC
Java反射机制,java代理模式
静态代理
动态代理
Cglib代理
反射机制
Java泛型
Java注解
原理
实现XUtils
网络协议
线程和同步Synchronized
Synchronized原理
Volatile实现原理
方法锁、对象锁、类锁的意义和区别
线程同步的方法:Synchronized、lock、reentrantLock分析
Java锁的种类: 公平锁、乐观锁、互斥锁、分段锁、偏向锁、自旋锁等
ThreadLocal的原理和用法
ThreadPool的用法和示例
wait()和sleep()的区别
java高级
Java虚拟机,Java运行,Java GC机制(可达性分析法,引用计数法)
Java对象的完整生命周期
JVM内存模型
进程间通信,线程间通信
JVM类加载机制
Java引用类型
HTTP协议和HTTPS协议
Socket协议,Socket实现长连接
TCP和UDP协议
HTTP协议中GET和POST的具体实现
序列化和反序列化
线程池的实现原理
数据库基础知识:多表查询、索引、数据库事务
andorid基础
application生命周期
activity
service
fragment
BroadcastReceiver
Handler
事件分发
多线程
嵌套滑动
实现
滑动冲突
RecyclerView和ListView区(缓存原理,区别联系,优缺点)
View绘制原理,自定义View
祝线程Looper.loop为什么不会造成死循环
ViewPager的缓存实现
requestLayout,invalidate,postInvalidate区别与联系
Android两种虚拟机
AndroidP新特性
Asset目录与res目录的区别
Android SQLite的使用入门
android进阶
Android开发高级
Android高级工程师招聘要求:1. 熟悉Android SDK,熟悉Android UI,熟悉Android各种调试工具;2. 有丰富的Android应用架构能力,能够独立主导并架构App;3. Mobile Web 开发经验;具备各种复合技能:熟悉iOS、H5、Python、.NET等多种开发语言的优先考虑;4. 对Android性能优化,安全,软件加固,自动化测试有深刻认识;5. 博客,开源项目
Android技术难点
AIDL、Binder、多进程、View的绘制流程、事件分发、消息队列等。这类知识对于定位自己为高级Android工程师的人来说是必须掌握的,同时他也是能鉴别高级和初中级工程师的一块试金石,其中binder是Android系统进程间通信最重要的手段之一,现阶段app的发展离不开多进程的运用,经常会启动例如定位、推送等需要在后台开启动的进程来来保证主进程的内存运行;所以合理的使用多进程也是十分必要的;view的绘制是我们自定义控件的理论基础,只有掌握了view是如何绘制的才能个性化的自定义控件;事件分发一直是Android开发的难点之一,也是必须掌握的;关于handler机制也是android的一块难点,因为包括Asynctask、系统启动、Intentservice等底层都是通过handler来实现的,所以掌握后handler机制不仅能提高你的实战开发能力,更能让你系统的了解整个android系统运作的情况。
Android框架层源码掌握
Android包管理机制,核心PackageManagerService
Window管理,核心WindowManagerService
Android Activity启动和管理,核心ActivityManagerService
根Activity工作流程
Context关联类
各种原理,经典第三方库源码系列
自定义LayoutManager,RecyclerView中如何自定义LayoutManager
VLayout实现原理,即如何自定义LayoutManager
Glide加载原理,缓存方案,LRU算法
Retrofit的实现与原理
OKHttp3的使用,网络请求中的Intercept
EventBus实现原理
ButterKnife实现原理
RxJava实现原理
Dagger依赖注入
热修复实现原理,解决方案
组件化原理和解决方案
权限申请
SoulPermission
RxPermissions
PermissionsDispatcher
图片
Glide
Android进程通信以及多进程开发
Android 多进程和Application关系
经典解决方案:多进程通信解决方案:Andromeda
Android动画机制
经典学习资料:HenCoder: 给高级Android工程师的进阶手册
Android绘图原理
经典学习资料:HenCoder: 给高级Android工程师的进阶手册
Android页面恢复
采用方法
onSaveInstanceState(Bundle outState)
onRestoreInstanceState(Bundle savedInstanceState)
onSaveInstanceState: 当Activity容易被系统销毁时,会触发该方法。具体的说
用户点击Home键
用户点击Home键,切换到其他应用程序
有电话来了等附加操作
用户点击Home键
用户点击Home键,切换到其他应用程序
有电话来了等附加操作
Gradle,自动化构建,持续集成相关
android系统
Android Studio编译过程
其中使用到的编译工具:
aapt、aidl、Java Compiler、dex、 zipalign
主要步骤描述:
通过aapt打包res资源文件,生成R.java、resources.arsc和res文件(二进制 & 非二进制如res/raw和pic保持原样)
处理.aidl文件,生成对应的Java接口文件
通过Java Compiler编译R.java、Java接口文件、Java源文件,生成.class文件
通过dex命令,将.class文件和第三方库中的.class文件处理生成classes.dex
通过apkbuilder工具,将aapt生成的resources.arsc和res文件、assets文件和classes.dex一起打包生成apk
通过Jarsigner工具,对上面的apk进行debug或release签名
通过zipalign工具,将签名后的apk进行对齐处理。
aapt、aidl、Java Compiler、dex、 zipalign
主要步骤描述:
通过aapt打包res资源文件,生成R.java、resources.arsc和res文件(二进制 & 非二进制如res/raw和pic保持原样)
处理.aidl文件,生成对应的Java接口文件
通过Java Compiler编译R.java、Java接口文件、Java源文件,生成.class文件
通过dex命令,将.class文件和第三方库中的.class文件处理生成classes.dex
通过apkbuilder工具,将aapt生成的resources.arsc和res文件、assets文件和classes.dex一起打包生成apk
通过Jarsigner工具,对上面的apk进行debug或release签名
通过zipalign工具,将签名后的apk进行对齐处理。
App启动加载过程
Android虚拟机 Android App运行的沙箱原则
Android架构
在Android源码中最重要的三个类:ActivityManagerService/PackageManagerService/View,推荐大家周末的时候可以去阅读下这部分的源码,阅读源码能提高我们今后设计架构自己代码的能力,同时也能从底层了解整个android系统的运行原理,其他一些比如主线程的消息循环、主线程如何和AMS如何跨进程交互、SystemServer进程中的各种Service的工作方式、AsyncTask的工作原理等。这些知识也是作为一个Android高级开发工程师必须掌握的,不能整天沉溺于ui和四大组件的交互,要站在更高的角度去考虑Android的有些问题。
android架构
我对移动端架构的思考
mvx
mvp
mvvm
clean
组件化开发
跨平台
Flutter
ReactNative(RN未来要黄,了解一下就好)
android内存优化
优化总揽
图片
android性能优化的方法
布局优化
减少层级
include标签的使用
merge标签
ViewStub
绘制优化
View的onDraw方法要避免执行大量的操作
onDraw内部避免创建局部对象
onDraw内部不要做耗时的任务
内存泄露优化
静态变量导致的内存泄露
单例模式导致的内存泄露
属性动画导致的内存泄漏
响应速度优化和ANR日志分析
核心思想是避免在主线程做耗时的操作
ANR-Trace文件分析
ListView和Bitemap优化
线程优化
其他建议
避免创建过多对象
不要过多使用枚举,枚举占用的内存空间要比整形大
常量请使用 static final 来修饰
使用Android 特有的数据结构,比如SparseArray和Pair等,他们都具有更好的性能
适当使用软引用和弱引用
采用内存缓存和磁盘缓存
尽量采用静态内部哪,这样可以避免潜在的由于内部类而导致的内存泄漏
内存泄漏分析直MAT工具
提高程序的可维护性
可读性
命名规范
代码排版
仅未非常关键的代码添加注释
收藏
0 条评论
下一页