Dynamic User Interface
-
RecyclerView - 列表类的布局首选控件,性能相对 ListView 要好一些,功能也比 ListView 要多一些
-
ViewPager
-
Spinner
CustomView
Android 默认的布局很多时候都没法满足设计的需求,这时候就需要自定义 View,你需要掌握下面几个知识点的使用
-
Canvas
-
Bitmap
-
Paint
UI Resources
相比 HardCode,使用资源文件会让代码的可修改性更高
-
Drawables
-
String
-
Styles
Fragments
许多人提倡 App 使用 单 Activity + 多个 Fragment 的组合,可见 Fragment 在开发中的重要性,但是 Fragment 的管理又是一门技术,Fragment 的坑,只能在实际开发中慢慢填平了,不过下面的 Fragment 基础还是要牢固
-
Fragment Lifecycle
-
Fragment Manager
Support User Interface
这里列的同样是一些功能组件,需要知道这是什么东西,基本的用法
-
ProgressBar - 进度条
-
Dialogs - 弹框
-
Toast & Snackbar - 提示
Storage
App 开发不免要和文件打交道,文件的读写、存储都是必不可少的,下面列出了几种 Android 中存储相关的知识点
-
Shared Preferences - 适合存储字段
-
File Systems - 文件存储
-
Database — RoomDB - 数据库存储,RoomDB 是 Google 新推出的数据库解决方案(在 AndroidX 中),具体使用可以参考官方文档
Build
Android App 默认使用 Gradle 进行编译,关于 Gradle 的使用必须要熟悉,以及如何区分开发版本和 Release 版本,以及国内特有的多渠道打包技术、以及 ASM 等
-
Gradle
-
Debug / Release Configuration
-
多渠道打包
-
ASM
Threading
理解 Thread 非常重要,Android App 只有一个主线程,其余的我们称之为工作线程,我们的很多工作需要再工作线程和主线程直接切换,如何高效创建和释放线程、线程池、线程间通信、Message-Looper-Handler 模型这些知识点都要了熟于心,另外进阶的话 Binder 通信也是需要掌握的知识
-
Threads
-
Handler / Looper / Message / MessageQueue
-
AIDL / Binder
=======================================================================
这里列举了一些 Debug 的基本手段,实际开发中遇到具体问题的时候一般都会用到,不过有的可能入手难度要高一些,需要花时间去掌握。Debug 工具除了下面这几个还有很多
-
Memory profiling - MAT,AS Memory Profile
-
Logging - Log 包含非常丰富的信息,可以帮助我们还原现场
-
Systrace - Systrace 工具可以查看一段时间内手机系统各个进程的运行状态,具体使用可以参考我博客的 Systrace 系列教程
-
Exceptions - 各种异常,保证程序的健壮性
-
Error Handling - Error 是必须要解决的问题,一般会导致 App 直接闪退,需要非常重视
=========================================================================
内存泄漏是一个很大的专题,包括 Java 内容泄漏和 Native 内存泄漏,涉及的知识点非常多,可以单独拿出来做一个大的知识栈。一般来说, Java 内存泄漏会比较好检测和修复,但是 Native 内存泄漏就会比较难。
-
Detecting and Fixing Memory Leaks - 内存泄漏检测和修复,是一个比较大的工程,可以参考 LeakCanary、Matrix 等开源工具
-
Context - 使用不当会造成该释放的对象没有释放造成内存泄漏
-
Native Memory Leaks
===============================================================================
经典的第三方类库,可以大幅节约我们的开发时间
-
Image Loading - Glide, Picasso
-
Dependency Injection - Dagger
-
Networking - Fast Android Networking Library, Retrofit
-
MultiThreading - RxJava, Coroutines
=========================================================================
常见的一些数据保存流格式
-
JSON — GSON
-
Flat Buffer
-
Protocol Buffer
=============================================================================
Jetpack 是 Google 推出的一套库、工具和指南,可帮助开发者更轻松地编写优质应用。这些组件可帮助您遵循最佳做法、让您摆脱编写样板代码的工作并简化复杂任务,以便您将精力集中放在所需的代码上。Jetpack 包含与平台 API 解除捆绑的 androidx.* 软件包库。这意味着,它可以提供向后兼容性,且比 Android 平台的更新频率更高,以此确保您始终可以获取最新且最好的 Jetpack 组件版本。
-
Foundation Components — AppCompat, Android KTX, Multidex
-
Architecture Components — LiveData, ViewModel, DataBinding, Paging, Work Manager, Navigation
-
Behaviour Components - Download Manager, Media Playback, Notification, Permissions, Preference, Sharing, Slice
-
UI Component - Animation & Transition, Android Auto, Emoji, Palette, Android TV, Android Wear
==========================================================================
传统的开发架构,没有绝对的哪个好哪个不好,只有哪个适合哪个不适合,下面三种你都应该知道并有一定的了解
-
MVVM - MVVM 是 Model-View-ViewModel的简写。它本质上就是 MVC 的改进版。MVVM 就是将其中的 View 的状态和行为抽象化,让我们将视图 UI 和业务逻辑分开
-
MVI ?
-
MVP - MVP 从更早的 MVC 框架演变过来,与 MVC 有一定的相似性:Controller/Presenter 负责逻辑的处理,Model 提供数据,View 负责显示
==========================================================================
-
Local Unit Testing
-
Instrumentation Testing
======================================================================
Firebase 国内很多开发者用不到,这里简单看一下即可(说不定哪天国内就可以用了呢)
-
FCM
-
Crashlytics
-
Analytics
-
Remote Config
-
App Indexing
-
Dynamic Link
======================================================================
安全方面接触毕竟多的应该是加密、解密、混淆等,毕竟用户数据安全大于一切,不重视这个欧盟会教你做人
-
Encrypt / Decrypt
-
Proguard
-
R8
=========================================================================
应用发布相关的知识,国内还得加上多渠道打包、插件化
-
.keystore file
-
App Bundle
-
Playstore
-
多渠道打包
-
插件化
=========================================================================================
作为一个有进取心的 Android 开发者,拥有自己的技术栈和规划非常重要,技术栈确保你有足够的市场竞争力,从而形成护城河;技术规划则可以给你一个明确的学习目标。卸载抖音、微博、斗鱼、游戏吧,做好 2020 年的规划,Keep Learning and Improving ,共勉
如果你苦于没有好的时间管理方法,可以参考这个视频我是怎么做周计划 | 生产力提升 | 我的方法,这个是我熟悉的一个大佬的工作学习方法实践,推荐给大家
还有我这些年搜集整理的一些资料,都整理在我的【石墨文档】里面了,有需要的朋友可以扫描文章末尾的二维码,群文件里即可领取!
凡是预则立,不预则废,年度计划太长,日计划又太短。实践下来发现以周为单位做时间管理(时间管理)最靠谱,既考虑了短期又考虑了长期,可以使自己长期坚持做某事,也有一定的时间长度用来做有价值的事情。
=========================================================================
最后这点非常重要。
不能因为你已经掌握了几种语言或正在使用的技术栈,就沾沾自喜。别忘了继续学习。我们需要学习的技术还很多。技术日新月异,不要误以为当下掌握的知识在十年后仍然有所帮助。
我们需要不断学习,提升自己,因为Android开发在不断发展。我觉得这就是Android开发最有魅力的地方,我们永远不会错过学习新技术的机会。
机遇往往转瞬即逝。你要时刻做好准备。保留尽可能多的工具,当机遇敲响你的大门时,你已做好万全的准备。
这里小编也分享一份私藏,内容包含:Android学习PDF+架构视频+面试文档+源码笔记,高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料这几块的内容。分享给大家,非常适合近期有面试和想在技术道路上继续精进的朋友。希望可以帮助到大家提升进阶
学习福利
【Android 详细知识点思维脑图(技能树)】
其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。
虽然 Android 没有前几年火热了,已经过去了会四大组件就能找到高薪职位的时代了。这只能说明 Android 中级以下的岗位饱和了,现在高级工程师还是比较缺少的,很多高级职位给的薪资真的特别高(钱多也不一定能找到合适的),所以努力让自己成为高级工程师才是最重要的。
这里附上上述的面试题相关的几十套字节跳动,京东,小米,腾讯、头条、阿里、美团等公司19年的面试题。把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节。
由于篇幅有限,这里以图片的形式给大家展示一小部分。
网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。
过去了会四大组件就能找到高薪职位的时代了。这只能说明 Android 中级以下的岗位饱和了,现在高级工程师还是比较缺少的,很多高级职位给的薪资真的特别高(钱多也不一定能找到合适的),所以努力让自己成为高级工程师才是最重要的。
这里附上上述的面试题相关的几十套字节跳动,京东,小米,腾讯、头条、阿里、美团等公司19年的面试题。把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节。
由于篇幅有限,这里以图片的形式给大家展示一小部分。
[外链图片转存中…(img-E7m0cttQ-1726126299425)]
网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。