2020-04-01

Android 零基礎入門

Android 零基礎與進階知識學習 Roadmap

概述

本文適用于:

  • 零基礎,想學習Android的同學。

  • 也適用于已經開始使用Android開發,但想要變得更好的同學。

本內容最大作用是“學習導航”,讓你了解知識盲區,讓你學習不走彎路,在此基礎上盡力提供最佳學習資料。請同學們不要僅僅依賴本文檔提供的學習資料,應該自行拓展和搜索更多資料進行學習,成為一位資深“Google”工程師。

相關知識點學習,推薦優先看 Android 官方開發指導文檔:Android Developer Guides

先上一張全景圖。

尊重知識產權,感謝作者 Amit Shekhar。

image

入門

  1. 首先,你必須有掌握Android開發必須具體的JAVA基礎知識(先以Java為基礎語言,再學習Kotlin),建議書籍HeadFirst for JavaEffective Java

  2. 在PC或筆記本電腦上設置Android開發的Android Studio IDE。 Install Android Studio

  3. 在Android Studio中設置Kotlin。 Setup Kotlin in Android Studioadd-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 ActivityActivity 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 threadingUnderstanding 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 Practicesfuturice/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: MVPandroid-mvvm-architecture

  4. 組件化

  5. etc.

工程與工具

  1. 學習Git,這樣你才知道如何在全球最大男性社交網絡 GitHub 上與大神們互動,知道如何在日常的協同開發中與你的同事互動。?Git Quick Start - 原理淺析、常用命令與技巧最佳實踐?

  2. 了解Gradle構建工具。Android Gradle PluginGradle 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 InjectorIntroduction 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 Developmentkoltincn

  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.

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容