阿里大神最佳總結Flutter進階學習筆記,技術詳細介紹

開頭

很多人工作了十年,但只是用一年的工作經驗做了十年而已。

高級工程師一直是市場所需要的,然而很多初級工程師在進階高級工程師的過程中一直是一個瓶頸。

移動研發在最近兩年可以說越來越趨于穩定,因為越來越多人開始學習Android開發,造成市場參差不齊。正所謂入門容易成長很難,對未來比較迷茫,不知道自己技能該怎么提升,并且對于初級中級高級需要怎么進行成才,很多人都比較迷惑。

做了6年Android開發,你會的還只有初級工程師的技術嗎?掌握了高級工程師的技術了嗎?

JetPack里的組件

上圖就是JetPack中包含的組件列表,每個組件都是相對獨立的,可以被單獨使用和構建。其中像被介紹的最多,也是最常被使用的LiveData, ViewModel, Room, Navigation, WorkManager之類的都發布了正式版,而CameraX, Compose之類的還處在Alpha版本,未正式發布,官方并不建議在生產環境中使用。

然后說下,JetPack所有的組件都是基于AndroidX構建的,如果想在項目中使用JetPack需要先將項目中對Support Lib的依賴全部換成AndroidX

Android目前已經發展了11年,可以說是比較成熟的技術了,一開始時框架很少,也沒有什么規范,所有的代碼都是要自己寫,比如網絡請求,數據庫請求,數據解析等等。后來出現了一些框架來幫助開發者快速進行開發,比如XUtils、Volley、OKHttp、EventBus等,隨著框架越來越多,一個應用可以有多種技術選型,直接導致應用開發越來越不規范,導致做出來的應用質量參差不齊,這顯然不是谷歌想看到的。谷歌隨后推出了MVP和MVVM相關的官方例子,效果很一般,而且覆蓋面只是在架構上,Goole I/O 2018大會上推出的Android Jetpack有望解決以上的問題。

三、Android Jetpack簡介

Jetpack并不是一個框架或者組件,它是一套庫、工具和指南的集合,可幫助開發者更輕松地編寫優質應用。這些組件可幫助開發者遵循最佳做法、擺脫編寫樣板代碼的工作并簡化復雜任務,以便將精力集中放在所需的代碼上。
Android Jetpack中的很多組件并不都是新開發的,而是很早就有了,比如在Goole I/O 2017大會時推出了 Android Architecture Component(AAC),它包括了LifeCycle、LiveData、ViewModel、Room。在Goole I/O 2018大會上,
用AndroidX替代了Android Support Library,并在Android Architecture Component的基礎上發布了Android Jetpack,AndroidX也是屬于Android Jetpack。

Jetpack主要特性有以下三點:

1.加速開發
組件可單獨使用,也可以協同工作,當使用kotlin語言特性時,可以提高效率。

2.消除樣板代碼
Android Jetpack可管理繁瑣的Activity(如后臺任務、導航和生命周期管理)。

3.構建高質量的強大應用
Android Jetpack組件圍繞現代化設計實踐構建而成,具有向后兼容性,可以減少崩潰和內存泄漏。

四、Android Jetpack分類

下圖是Jetpack的分類。

谷歌仍舊不斷的完善Android Jetpack,截至到2019年8月已經有很多新加的組件并沒有顯示在上圖中,比如CameraX等。Android Jetpack分類有4種,分別是Architecture、Foundationy、Behavior、UI,下面分別介紹下。

1. Architecture(架構組件)

Architecture指的是架構組件,幫助開發者設計穩健、可測試且易維護的應用。架構組件可以說是對應用開發幫助最大的組件,本系列也是圍繞著架構組件進行講解。

DataBinding:以聲明方式將可觀察數據綁定到界面元素,通常和ViewModel配合使用。

Lifecycle:用于管理Activity和Fragment的生命周期,可幫助開發者生成更易于維護的輕量級代碼。

LiveData: 在底層數據庫更改時通知視圖。它是一個可觀察的數據持有者,與常規observable不同,LiveData是生命周期感知的。
Navigation:處理應用內導航。

Paging:可以幫助開發者一次加載和顯示小塊數據,按需加載部分數據可減少網絡帶寬和系統資源的使用。

Room:友好、流暢的訪問SQLite數據庫。它在SQLite的基礎上提供了一個抽象層,允許更強大的數據庫訪問。

ViewModel: 以生命周期的方式管理界面相關的數據,通常和DataBinding配合使用,為開發者實現MVVM架構提供了強有力的支持。

WorkManager: 管理Android的后臺的作業,即使應用程序退出或設備重新啟動也可以運行可延遲的異步任務。

官方推薦的Android應用架構如下圖所示。

這些架構組件既可以配合使用,也可以單獨使用,這里建議還是盡量按照官方推薦的來。

2. Foundationy(基礎組件)

基礎組件提供橫向功能,例如向后兼容性、測試、安全、Kotlin 語言支持,并包括多個多個平臺開發的組件。

Android KTX:優化了供Kotlin使用的Jetpack和Android平臺API。幫助開發者以更簡潔、更愉悅、更慣用的方式使用Kotlin進行Android開發。
AppCompat:幫助較低版本的Android系統進行兼容。
Auto: 開發Android Auto應用的組件,提供了適用于所有車輛的標準化界面和用戶交互。
檢測:從AndroidStudio中快速檢測基于Kotlin或Java的代碼。
多Dex處理:為具有多個Dex文件應用提供支持。
安全:安全的讀寫加密文件和共享偏好設置。
測試:用于單元和運行時界面測試的Android 測試框架。
TV: 構建可讓用戶在大屏幕上體驗沉浸式內容的應用。
Wear OS:開發Wear應用的組件。

3. Behavior(行為組件)

行為組件可幫助開發者的應用與標準Android服務(如通知、權限、分享)相集成。

CameraX:幫助開發簡化相機應用的開發工作。它提供一致且易于使用的界面,適用于大多數Android。 設備,并可向后兼容至Android 5.0(API 21)。
DownloadManager:處理長時間運行的HTTP下載的系統服務。
媒體和播放:用于媒體播放和路由(包括Google Cast)的向后兼容API。
通知:提供向后兼容的通知API,支持Wear和Auto。
權限:用于檢查和請求應用權限的兼容性API。
設置:創建交互式設置,建議使用AndroidX Preference Library庫將用戶可配置設置集成到應用中。
分享操作:可以更輕松地實現友好的用戶分享操作。
切片:切片是一種UI模板,創建可在應用外部顯示應用數據的靈活界面元素。

4. UI(界面組件)

Animation and Transition:該框架包含用于常見效果的內置動畫,并允許開發者創建自定義動畫和生命周期回調。
Emoji Compatibility:即便用戶沒有更新Android系統也可以獲取最新的表情符號。
Fragment:組件化界面的基本單位。
布局:用XML中聲明UI元素或者在代碼中實例化UI元素。
調色板:從調色板中提取出有用的信息。

五、在應用中引入Jetpack相關組件

在項目build.gradle中添加google() 庫,如下所示。

  allprojects {repositories {google()jcenter()}}

如果想引入Room,可以在模塊build.gradle中這么寫:

    implementation   "android.arch.persistence.room:runtime:1.1.1"annotationProcessor   "android.arch.persistence.room:compiler:1.1.1 "androidTestImplementation  "android.arch.persistence.room:testing:1.1.1"

總結

這篇文章內部不多,旨在讓大家了解Android Jetpack是什么,包括什么,如何引用,從下一篇開始,就開始學習Android Jetpack的架構組件。

最后對于程序員來說,要學習的知識內容、技術有太多太多,要想不被環境淘汰就只有不斷提升自己,從來都是我們去適應環境,而不是環境來適應我們!

設計模式學習筆記

設計模式系列學習視頻

  • 以上進階BATJ大廠學習資料可以免費分享給大家,需要完整版的朋友,【點這里可以看到全部內容】。

外鏈圖片轉存中…(img-LzoJALsI-1618908031002)]

  • 以上進階BATJ大廠學習資料可以免費分享給大家,需要完整版的朋友,【點這里可以看到全部內容】。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/386656.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/386656.shtml
英文地址,請注明出處:http://en.pswp.cn/news/386656.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Mysql 允許所有IP訪問

$ mysql -u root -p Enter password:mysql> use mysql#mysql> GRANT ALL ON *.* to root192.168.1.4 IDENTIFIED BY your-root-password; mysql> GRANT ALL ON *.* to root% IDENTIFIED BY root; mysql> FLUSH PRIVILEGES;

貪心算法小結2

F-Ants 一隊螞蟻在一根水平桿上行走,每只螞蟻固定速度 1cm/s. 當一只螞蟻走到桿的盡頭時,立即從稈上掉落. 當兩只螞蟻相遇時它們會掉頭向相反的方向前進. 我們知道每只螞蟻在桿上的初始位置, 但是, 我們不知道螞蟻向哪個方向前行. 你的任務是計算所有螞蟻…

掌握這些Android開發熱門前沿知識,跳槽薪資翻倍

前言 這是一篇軟文、但是絕對不是雞湯;為啥不是呢?因為我文筆太差…偶爾矯情發發牢騷(勿噴) 說說程序猿行業 現在社會上給IT行業貼上了幾個標簽:高薪、高危、高大上、禿頂(哈哈)。這些標簽我…

linux環境-docker安裝rabbitmq

1、進入docker hub鏡像倉庫地址:https://hub.docker.com/ 2、搜索rabbitMq,進入官方的鏡像,可以看到以下幾種類型的鏡像;我們選擇帶有“mangement”的版本(包含web管理頁面); 3、拉取鏡像 doc…

揭秘ARouter路由機制,源碼+原理+手寫框架

前言 每個程序員都有一個夢想,那就是進一線互聯網公司深造,不要跟我說你不想進去,如果給你一個這樣的平臺,不管是薪資待遇還是接觸的高度來說,對我們程序員來說都是一個機會,我以前有一個同事,…

docker 安裝 nacos/nacos-server 鏡像并配置本地數據庫

docker pull nacos/nacos-server 啟動鏡像 這里啟動容器的時候參數配置我就不在詳解了,不明白的話,評論區留言,有不會的問題一定要及時詢問,期待你的評論呦! docker run --env MODEstandalone --name nacos -d -p 884…

初中 英文

英語過去式與過去完成進行時是在英語語法學習中,非常重要的兩種語法,直接影響著英語能力的好壞。熟練掌握這兩種語法對于學習者來說是至關重要的,今天就為大家整理了有關英語過去式與過去完成進行時的相關用法解析,希望大家可以認…

揭秘!雙非渣本Android四年磨一劍,學習路線+知識點梳理

第一次觀看我文章的朋友,可以關注、點贊、轉發一下,每天分享各種干貨技術和程序猿趣事 由于涉及到的面試題較多導致篇幅較長,我根據這些面試題所涉及到的常問范圍總結了并做出了一份學習進階路線圖???????及面試題答案免費分享給大家&…

Windows上PostgreSQL安裝配置教程

這篇文章主要為大家詳細介紹了Windows上PostgreSQL安裝配置教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下 PostgreSQL的擴展PostGIS是最著名的開源GIS數據庫。 安裝PostgreSQL是第一步。 1.下載PostgreSQL的二進制安裝文件。 PostgreSQL官網…

快遞100接口的調用過程

前言 大部分的商城都需要調用快遞的接口來記錄商城的物流信息,這里就給出一種快遞接口(快遞100)調用的方法。 正文 一、官方文檔 1. 官方文檔的地址為: https://www.kuaidi100.com/openapi/api_subscribe.shtml 二、具體實現 1. 商…

搞懂開源框架設計思想真的這么重要嗎?終獲offer

正文 從我個人的角度寫寫30多歲碼工的感受:的確是受年齡壓力開始增大了。比如二十多歲的小年輕,可能什么都懂,對組里的東西很熟悉。有時候我也懷疑自己是不是智商不夠,是不是自學能力太差,是不是基礎不行,…

gitlab 修改HTTP連接方式中的IP和端口

修改gitlab.yml文件 cd /opt/gitlab/embedded/service/gitlab-rails/config vim gitlab.yml 修改gitlab host:要修改的IPport:要修改的端口重啟gitlab gitlab-ctl restart

Coding Interview Guide -- 向有序的環形單鏈表中插入新節點

【題目】 一個環形單鏈表從頭節點head開始不降序,同時由最后的節點指回頭節點。給定這樣一個環形單鏈表的頭節點head和一個整數num,請生成節點值為num的新節點,并插入到這個環形鏈表中,保證調整后的鏈表依然有序 1 public Nod…

真香定律!Android動態換膚實現原理解析,原理+實戰+視頻+源碼

自己項目中一直都是用的開源的xUtils框架,包括BitmapUtils、DbUtils、ViewUtils和HttpUtils四大模塊,這四大模塊都是項目中比較常用的。最近決定研究一下xUtils的源碼,用了這么久總得知道它的實現原理吧。我是先從先從BitmapUtils模塊開始的。…

使用Docker啟動Grafana環境

docker search grafana docker pull grafana/grafana docker imagesdocker run -d -p 3000:3000 grafana/grafana 啟動成功,進入本機瀏覽器訪問 http://localhost:3000 使用admin/admin進入系統

js包裝類型的裝箱拆箱

https://www.jb51.net/article/155820.htm https://juejin.im/post/5cbaf130518825325050fb0a https://juejin.im/post/5ccfb58f518825405a198fcd轉載于:https://www.cnblogs.com/little-ab/p/11025952.html

真香定律!Android動態換膚實現原理解析,吐血整理

自己項目中一直都是用的開源的xUtils框架,包括BitmapUtils、DbUtils、ViewUtils和HttpUtils四大模塊,這四大模塊都是項目中比較常用的。最近決定研究一下xUtils的源碼,用了這么久總得知道它的實現原理吧。我是先從先從BitmapUtils模塊開始的。…

knife4j是為Java MVC框架集成Swagger生成Api文檔的增強解決方案

knife4j knife4j是為Java MVC框架集成Swagger生成Api文檔的增強解決方案,前身是swagger-bootstrap-ui,取名kni4j是希望它能像一把匕首一樣小巧,輕量,并且功能強悍! knife4j的前身是swagger-bootstrap-ui,為了契合微服務的架構發展,由于原來swagger-bootstrap-ui采…

調試與對拍(一):生成測試數據+對拍

今天打比賽時令小編很氣憤,隔壁LSH有文件運行錯誤,重提了一遍老師就收,而小編重提卻愛搭不理,于是小編決定還是自己造個數據把代碼重測一遍,于是潛心鉆研生成測試數據的方法。 其實很簡單,用隨機數生成器生…

真香定律!一文帶你搞懂Android多線程Handler,成功入職騰訊

Google 為了幫助 Android 開發者更快更好地開發 App,推出了一系列組件,這些組件被打包成了一個整體,稱作 Android Jetpack,它包含的組件如下圖所示: 老的 support 包被整合進了 Jetpack,例如上圖 Foundatio…