Android 零基础入门

Android 零基础与进阶知识学习 Roadmap

概述

本文适用于:

  • 零基础,想学习Android的同学。

  • 也适用于已经开始使用Android开发,但想要变得更好的同学。

本内容最大作用是“学习导航”,让你了解知识盲区,让你学习不走弯路,在此基础上尽力提供最佳学习资料。请同学们不要仅仅依赖本文档提供的学习资料,应该自行拓展和搜索更多资料进行学习,成为一位资深“Google”工程师。

相关知识点学习,推荐优先看 Android 官方开发指导文档:Android Developer Guides。

先上一张全景图。

尊重知识产权,感谢作者 Amit Shekhar。

image

入门

  1. 首先,你必须有掌握Android开发必须具体的JAVA基础知识(先以Java为基础语言,再学习Kotlin),建议书籍HeadFirst for Java、Effective Java

  2. 在PC或笔记本电脑上设置Android开发的Android Studio IDE。 Install Android Studio

  3. 在Android Studio中设置Kotlin。 Setup Kotlin in Android Studio、add-kotlin

  4. Android Studio IDE简介。Introduction to Android Studio IDE。

  5. 构建你的第一个App,Android用户界面 - XML和视图组件 Android User Interface — XML and View Components

开始学习

  1. Android 四大组件等基本概述

  2. 理解Activity 和它的生命周期,因为在构建无错误的应用程序时,了解Activity生命周期非常重要。Introduction to Activity、Activity Lifecycle

  3. Android 清单文件——Manifest File。

  4. Android 资源文件——App Resources。

  5. 理解 Navigations,Task和Back Stack。 Android Activity是我们希望用户浏览的屏幕的逻辑结构。 每个Activity与其他Activity相关的关系对于良好的用户体验非常重要。传送门-Android Task and Back Stack Review

  6. 掌握 Android Layouts UI 布局,尝试开发各类简单的 UI。

  7. 理解 Context 在 Android应用程序。 要开发更好的Android应用,我们必须知道什么是Context? Android开发中的 Context 几乎无处不在,它是Android开发中最重要的东西,因此我们必须理解正确使用它。传送门-Understanding Context In Android Application

  8. 理解如何处理 Configuration 更改。 某些设备配置可在运行时更改,例如屏幕方向,键盘可用性以及用户启用多窗口模式时。 我们必须知道如何处理这些变化。Handle configuration changes

  9. 理解Fragment及其生命周期。 它主要是为了在大屏幕上支持更加动态和灵活的UI设计,例如平板电脑。推荐阅读 Fragment and its LifeCycle

  10. 理解 Broadcast 和 BroadcastReceiver。Broadcasts

  11. 理解Service和 IntentService 。 Service是用于在后台执行操作的组件,例如播放音乐,处理网络事务,交互内容提供者等。它没有任何UI(用户界面)。Services

  12. 理解ContentProvider。 它们用于在应用程序之间共享数据。 它们提供了定义数据安全性和封装数据的机制。ContentProviders

开发进阶

你以为下面就是全部?No,只是开端~~,需要你自己在以后的日子里不断的深入。

实践更多的 API

  1. 理解如何调试Android应用程序,因为它是任何开发人员最重要的技能。 Android Studio提供了一个调试器,允许您执行许多重要操作。调试您的应用|Android Developer

  2. 了解如何创建自定义视图。 为开发更好的Android应用,我们必须知道如何创建自定义视图。Custom View Components|Android Developers

  3. 理解 Threading。 由于Java虚拟机允许应用程序具有多个线程执行并发运行。 我们必须知道如何正确利用多线程环境。Better performance through threading、Understanding Android Threading

  4. 理解Android Core。 Looper,Handler和 HandlerThread 是Android解决异步编程问题的方法。 他们不是老派,而是一个整洁的结构,在这个结构上构建了一个复杂的android框架。传送门-Understanding Android Core: Looper, Handler, and HandlerThread

  5. 了解如何发起一个 http 请求,获取 server 数据,先试试用 Volley 入门简单的网络开发(拉取一些公网数据?加载一张网络图片?),你也可以用强大的 OkHttp 试试。

  6. 理解数据库和SQL。Know about db & sql|Youtube,学会使用 SQLite Save data using SQLite。

  7. 阅读有关构建安全Android应用程序的安全提示。安全要点|Android Developers

  8. 了解Android开发最佳实践。Android Development Best Practices、futurice/android-best-practices

  9. Optional:了解Android传感器,GPS,加速。Motion sensors|Android Developers

  10. Optional:了解位置和地图。Location and Maps|Android Developers

  11. etc.

性能(如何让你的App性能更好?)

  1. 直接从Android开发者频道观看和了解Android系列视频中的Android性能模式。Android Performance Patterns|Android Developers| YouTube

  2. 了解 JVM,了解dalvik,了解 ART(Android Runtime)。

  3. 掌握系统的 GC 过程,了解你的程序是如何使用内存的。Garbage Collection|Youtube

  4. 了解获取内存使用情况,CPU使用率等指标的工具。在Android应用程序开发过程中,您应该持续测量一些指标。Android App Performance Metrics

  5. 了解如何检测和修复Android应用程序中的内存泄漏。持有对不再需要的对象的引用是一种不好的做法,在服务之后释放对象引用有助于垃圾收集器杀死该对象,这最终有助于自己解决内存泄漏问题。 如果不必要地保留对象引用,则只会导致内存泄漏。Detecting and fixing memory leaks in android

  6. 了解Bitmaps。 由于需要大量内存,因此很容易引起OOM。 用户喜欢内容! 特别是当内容格式良好且看起来不错时。 图像就是非常好的内容提供载体,主要是因为它们的图像传千字的特性。 但由此也消耗大量内存。 大量的内存!Handling bitmaps|Android Developers

  7. Glide and Fresco 加载图片的基本策略:How the Andorid image loading library glide and fresc works?

  8. 了解应用程序的启动时间并努力改进它。App Launch Time|YouTube

  9. 了解如何减少APK大小。How to reduce APK size in android

  10. 了解如何优化电量使用情况。Location & Battery Drain| YouTube

  11. 探索何时应考虑使用 ArrayMap 以获得更好的Android应用程序性能。Android App Optimization Using ArrayMap and SparseArray

  12. 理解缓存实现。Cachematters for net..|Youtube

  13. 了解优化网络请求频率。优化网络请求|Youtube

  14. etc.

架构

除了初步了解常见的架构,你需要花费大量的时间去融会贯通他们的设计思想,并不断的去学习开发过程中遇到的更新、更大规模的程序架构。

  1. 了解Android架构组件。What are Android Architecture Components?

  2. 了解MVP架构。Android MVP Introduction

  3. 了解MVVM架构。Essential Guide For Designing Your Android App Architecture: MVP、android-mvvm-architecture

  4. 组件化

  5. etc.

工程与工具

  1. 学习Git,这样你才知道如何在全球最大男性社交网络 GitHub 上与大神们互动,知道如何在日常的协同开发中与你的同事互动。​Git Quick Start - 原理浅析、常用命令与技巧最佳实践​

  2. 了解Gradle构建工具。Android Gradle Plugin、Gradle Build Tool

  3. 掌握一些性能分析工具,如 官方工具 Android Profiler,还有很多功能强大的第三方工具待你发现。

  4. 了解如何 在Android应用程序中 应用 proguard 。 它是一种用于缩小代码,混淆代码和优化代码的工具,可以减小应用程序的大小。Applying Proguard In An Android Application

  5. 了解Android有用的工具。 因为我们都很幸运地生活在一个互相帮助的世界里,每个人都可以建立分享工具。 这些工具使开发更快,生活更轻松。 不要忘记探索和使用这些工具。Android Development Useful Tools

  6. etc.

了解更多第三方开源库

熟悉一些常见的开源库的使用,并了解它们的设计与实现,利于提高架构设计能力。

  1. OkHttp:强大的 http 请求库,https://square.github.io/okhttp/。

  2. Retrofit:http 网络请求框架,https://github.com/square/retrofit

  3. Glide & Fresco:最常用的两个图片加载库,掌握 Glide 的学习成本稍低一些,Fresco 需要对Android 系统有些了解以及一些C++经验。

  4. RxJava:学习 RxJava 。

  5. EventBus:基于发布/订阅模式的通信组件。

  6. Dagger2:了解依赖注入。The New Dagger 2 Android Injector、Introduction to Dagger 2

  7. 了解 ORM 框架:第三方的 greenDAO,官方的 Room。

  8. etc.

理解系统原理

了解完应用层的知识,你需要学习 Android 系统相关知识,以便掌握 Android 系统和程序运行过程与原理。这不仅对你的架构设计能力提升会有大帮助,你还可以掌握或者发明一些黑科技。

一个完全开源的操作系统对程序员来说是块瑰宝,请自行前往 AOSP 学习。

  1. Binder 机制、Activity Manager Service 等系统服务(Intent 为啥可以跨进程?谁帮你干的?)

  2. Android Application 启动过程

  3. Android Activity 创建过程

  4. Android Window 创建过程

  5. Android 绘制系统(从vsync到应用层绘制)

  6. 消息机制

  7. 了解 Android(Linux)文件系统。

  8. etc.

拓展更多

  1. 学习Kotlin。A Complete Guide To Learn Kotlin For Android Development、koltincn

  2. TCP/UDP

  3. http/http2.0

  4. https

  5. Protocol buffer

  6. Android 热更新与插件化技术

  7. AOP 技术

  8. Hook 技术

  9. AIDL

  10. 了解如何使用lint检查改进代码使用 Lint 改进您的代码

  11. 学会使用android studio插件,这样会让android开发变得更有效率。How to become more productive in android with android studio plugins

  12. 了解编写测试。Android Testing Codelab

  13. etc.

更多相关文章

  1. android内核编译方法[转贴]
  2. Android(安卓)开发工具
  3. 转自 老罗 Android应用程序资源管理器(Asset Manager)的创建过程分
  4. 1.4掌握日志工具的使用——Android第一行代码(第二版)笔记
  5. Android基本之SharedPreferences和File
  6. Android(安卓)栈简析
  7. Android(安卓)系统架构
  8. Mac Android(安卓)屏幕同步/共享投影工具[Vysor]
  9. Android(安卓)利用【Hierarchy Viewer 】 工具学习别人的UI设计

随机推荐

  1. 为什么我喜欢JavaScript的Optional Chain
  2. JavaScript 创意卡通滑杆拖动控件
  3. 利用ELK搭建Docker容器化应用日志中心
  4. JavaScript 中的奇葩知识
  5. 微服务通信的三种方法[每日前端夜话0xB5]
  6. 都9102年了,还需要用到 jQuery 吗?[每日前
  7. 干货来了!这款jQuery图表不容错过
  8. 笔记 Spinner类(下拉列表框):
  9. Jenkins长大了,Pipeline该用起来了!
  10. HTML5 蓝色 3D 钻石旋转动画