Android 零基础入门
Android 零基础与进阶知识学习 Roadmap
概述
本文适用于:
-
零基础,想学习Android的同学。
-
也适用于已经开始使用Android开发,但想要变得更好的同学。
本内容最大作用是“学习导航”,让你了解知识盲区,让你学习不走弯路,在此基础上尽力提供最佳学习资料。请同学们不要仅仅依赖本文档提供的学习资料,应该自行拓展和搜索更多资料进行学习,成为一位资深“Google”工程师。
相关知识点学习,推荐优先看 Android 官方开发指导文档:Android Developer Guides。
先上一张全景图。
尊重知识产权,感谢作者 Amit Shekhar。
入门
-
首先,你必须有掌握Android开发必须具体的JAVA基础知识(先以Java为基础语言,再学习Kotlin),建议书籍HeadFirst for Java、Effective Java
-
在PC或笔记本电脑上设置Android开发的Android Studio IDE。 Install Android Studio
-
在Android Studio中设置Kotlin。 Setup Kotlin in Android Studio、add-kotlin
-
Android Studio IDE简介。Introduction to Android Studio IDE。
-
构建你的第一个App,Android用户界面 - XML和视图组件 Android User Interface — XML and View Components
开始学习
-
理解Activity 和它的生命周期,因为在构建无错误的应用程序时,了解Activity生命周期非常重要。Introduction to Activity、Activity Lifecycle
-
Android 清单文件——Manifest File。
-
Android 资源文件——App Resources。
-
理解 Navigations,Task和Back Stack。 Android Activity是我们希望用户浏览的屏幕的逻辑结构。 每个Activity与其他Activity相关的关系对于良好的用户体验非常重要。传送门-Android Task and Back Stack Review
-
掌握 Android Layouts UI 布局,尝试开发各类简单的 UI。
-
理解 Context 在 Android应用程序。 要开发更好的Android应用,我们必须知道什么是Context? Android开发中的 Context 几乎无处不在,它是Android开发中最重要的东西,因此我们必须理解正确使用它。传送门-Understanding Context In Android Application
-
理解如何处理 Configuration 更改。 某些设备配置可在运行时更改,例如屏幕方向,键盘可用性以及用户启用多窗口模式时。 我们必须知道如何处理这些变化。Handle configuration changes
-
理解Fragment及其生命周期。 它主要是为了在大屏幕上支持更加动态和灵活的UI设计,例如平板电脑。推荐阅读 Fragment and its LifeCycle
-
理解 Broadcast 和 BroadcastReceiver。Broadcasts
-
理解Service和 IntentService 。 Service是用于在后台执行操作的组件,例如播放音乐,处理网络事务,交互内容提供者等。它没有任何UI(用户界面)。Services
-
理解ContentProvider。 它们用于在应用程序之间共享数据。 它们提供了定义数据安全性和封装数据的机制。ContentProviders
开发进阶
你以为下面就是全部?No,只是开端~~,需要你自己在以后的日子里不断的深入。
实践更多的 API
-
理解如何调试Android应用程序,因为它是任何开发人员最重要的技能。 Android Studio提供了一个调试器,允许您执行许多重要操作。调试您的应用|Android Developer
-
了解如何创建自定义视图。 为开发更好的Android应用,我们必须知道如何创建自定义视图。Custom View Components|Android Developers
-
理解 Threading。 由于Java虚拟机允许应用程序具有多个线程执行并发运行。 我们必须知道如何正确利用多线程环境。Better performance through threading、Understanding Android Threading
-
理解Android Core。 Looper,Handler和 HandlerThread 是Android解决异步编程问题的方法。 他们不是老派,而是一个整洁的结构,在这个结构上构建了一个复杂的android框架。传送门-Understanding Android Core: Looper, Handler, and HandlerThread
-
了解如何发起一个 http 请求,获取 server 数据,先试试用 Volley 入门简单的网络开发(拉取一些公网数据?加载一张网络图片?),你也可以用强大的 OkHttp 试试。
-
理解数据库和SQL。Know about db & sql|Youtube,学会使用 SQLite Save data using SQLite。
-
阅读有关构建安全Android应用程序的安全提示。安全要点|Android Developers
-
了解Android开发最佳实践。Android Development Best Practices、futurice/android-best-practices
-
Optional:了解Android传感器,GPS,加速。Motion sensors|Android Developers
-
Optional:了解位置和地图。Location and Maps|Android Developers
-
etc.
性能(如何让你的App性能更好?)
-
直接从Android开发者频道观看和了解Android系列视频中的Android性能模式。Android Performance Patterns|Android Developers| YouTube
-
了解 JVM,了解dalvik,了解 ART(Android Runtime)。
-
掌握系统的 GC 过程,了解你的程序是如何使用内存的。Garbage Collection|Youtube
-
了解获取内存使用情况,CPU使用率等指标的工具。在Android应用程序开发过程中,您应该持续测量一些指标。Android App Performance Metrics
-
了解如何检测和修复Android应用程序中的内存泄漏。持有对不再需要的对象的引用是一种不好的做法,在服务之后释放对象引用有助于垃圾收集器杀死该对象,这最终有助于自己解决内存泄漏问题。 如果不必要地保留对象引用,则只会导致内存泄漏。Detecting and fixing memory leaks in android
-
了解Bitmaps。 由于需要大量内存,因此很容易引起OOM。 用户喜欢内容! 特别是当内容格式良好且看起来不错时。 图像就是非常好的内容提供载体,主要是因为它们的图像传千字的特性。 但由此也消耗大量内存。 大量的内存!Handling bitmaps|Android Developers
-
Glide and Fresco 加载图片的基本策略:How the Andorid image loading library glide and fresc works?
-
了解应用程序的启动时间并努力改进它。App Launch Time|YouTube
-
了解如何减少APK大小。How to reduce APK size in android
-
了解如何优化电量使用情况。Location & Battery Drain| YouTube
-
探索何时应考虑使用 ArrayMap 以获得更好的Android应用程序性能。Android App Optimization Using ArrayMap and SparseArray
-
了解优化网络请求频率。优化网络请求|Youtube
-
etc.
架构
除了初步了解常见的架构,你需要花费大量的时间去融会贯通他们的设计思想,并不断的去学习开发过程中遇到的更新、更大规模的程序架构。
-
了解Android架构组件。What are Android Architecture Components?
-
了解MVP架构。Android MVP Introduction
-
了解MVVM架构。Essential Guide For Designing Your Android App Architecture: MVP、android-mvvm-architecture
-
组件化
-
etc.
工程与工具
-
学习Git,这样你才知道如何在全球最大男性社交网络 GitHub 上与大神们互动,知道如何在日常的协同开发中与你的同事互动。Git Quick Start - 原理浅析、常用命令与技巧最佳实践
-
了解Gradle构建工具。Android Gradle Plugin、Gradle Build Tool
-
掌握一些性能分析工具,如 官方工具 Android Profiler,还有很多功能强大的第三方工具待你发现。
-
了解如何 在Android应用程序中 应用 proguard 。 它是一种用于缩小代码,混淆代码和优化代码的工具,可以减小应用程序的大小。Applying Proguard In An Android Application
-
了解Android有用的工具。 因为我们都很幸运地生活在一个互相帮助的世界里,每个人都可以建立分享工具。 这些工具使开发更快,生活更轻松。 不要忘记探索和使用这些工具。Android Development Useful Tools
-
etc.
了解更多第三方开源库
熟悉一些常见的开源库的使用,并了解它们的设计与实现,利于提高架构设计能力。
-
OkHttp:强大的 http 请求库,https://square.github.io/okhttp/。
-
Retrofit:http 网络请求框架,https://github.com/square/retrofit
-
Glide & Fresco:最常用的两个图片加载库,掌握 Glide 的学习成本稍低一些,Fresco 需要对Android 系统有些了解以及一些C++经验。
-
RxJava:学习 RxJava 。
-
EventBus:基于发布/订阅模式的通信组件。
-
Dagger2:了解依赖注入。The New Dagger 2 Android Injector、Introduction to Dagger 2
-
etc.
理解系统原理
了解完应用层的知识,你需要学习 Android 系统相关知识,以便掌握 Android 系统和程序运行过程与原理。这不仅对你的架构设计能力提升会有大帮助,你还可以掌握或者发明一些黑科技。
一个完全开源的操作系统对程序员来说是块瑰宝,请自行前往 AOSP 学习。
-
Binder 机制、Activity Manager Service 等系统服务(Intent 为啥可以跨进程?谁帮你干的?)
-
Android Application 启动过程
-
Android Activity 创建过程
-
Android Window 创建过程
-
Android 绘制系统(从vsync到应用层绘制)
-
消息机制
-
了解 Android(Linux)文件系统。
-
etc.
拓展更多
-
学习Kotlin。A Complete Guide To Learn Kotlin For Android Development、koltincn
-
TCP/UDP
-
http/http2.0
-
https
-
Protocol buffer
-
Android 热更新与插件化技术
-
AOP 技术
-
Hook 技术
-
AIDL
-
了解如何使用lint检查改进代码使用 Lint 改进您的代码
-
学会使用android studio插件,这样会让android开发变得更有效率。How to become more productive in android with android studio plugins
-
了解编写测试。Android Testing Codelab
-
etc.
网友评论