[toc] 前幾天,Android I/O大會在上海舉辦,Google中國在B站上傳了一個Android開發最新技術概覽的視頻,裏面講解到了Android 十、Jetpack、Android Studio等新技術和黑科技,忽然發現本身不太瞭解各個Android系統版本的特性和發佈的功能點,因而查看了Android開發者官方文檔整理並總結各個系統版本的差別。android
版本 | 特色 |
---|---|
Android 4.4 KitKat | 一、NFC功能 二、傳感器 三、截屏和視頻錄製 四、全屏沉浸式模式 |
Android 5.0 Lollipop | 一、Material Design 二、改善通知(鎖屏也能顯示通知) 三、靜態編譯與動態編譯同時使用 |
Android 6.0 Marshmallow | 一、運行時權限(動態權限) 二、低耗電模式和待機模式 三、靜態編譯與動態編譯同時使用 四、文本選擇(剪切、複製、全選) |
Android 7 Nougat | 一、應用分屏 二、通知欄快捷回覆 三、快速設置 |
Android 8 Oreo | 一、全新的通知(渠道等) 二、自動填充框架 三、畫中畫(小窗口,播放視頻等) 四、自適應圖標(圓形、方形圖標) |
Android 9 Pie | 一、室內定位 二、劉海屏、凹凸屏的適配 三、多攝像頭支持 四、神經網絡API的支持 |
Android 10 | 一、可摺疊設備的支持 二、暗黑模式 三、5G網絡的支持 四、手勢導航 五、分享API的更新 六、設備標識碼的權限 六、地理位置權限 |
經過主機卡模擬新的NFC功能
Android 4.4經過主機卡模擬(HCE)進行基於NFC的安全交易、支付、卡存取、過境通行證和其餘自定義服務引入新的平臺支持。apache
打印框架
Android 應用能夠經過 WLAN 或雲託管服務(例如 Google 雲打印)打印任何類型的內容。在支持打印的應用中,用戶能夠發現可用的打印機,更改紙張尺寸,選擇要打印的特定頁面,打印幾乎任何種類的文檔、圖像或文件。設計模式
存儲訪問框架
新的存儲訪問框架讓用戶可以在其全部首選文檔存儲提供程序中方便地瀏覽並打開文檔、圖像以及其餘文件。用戶能夠經過易用的標準 UI,以統一方式在全部應用和提供程序中瀏覽文件和訪問最近使用的文件。api
低功耗傳感器緩存
傳感器批處理:Android 4.4 針對硬件傳感器批處理引入平臺支持,這是一項新的優化功能,能夠顯著下降傳感器持續活動所消耗的電量。安全
步測器和計步器:Android 4.4 還增長對了兩種新的複合傳感器 — 步測器和計步器 — 的平臺支持,它們讓您的應用能夠在用戶行走、跑步或攀爬樓梯時跟蹤步數。這些新的傳感器在硬件中實現,以下降耗電量。bash
短信提供程序
若是您開發使用短信或彩信的消息傳遞應用,如今您可使用共享短信提供程序和新的 API 管理您的應用的消息存儲和檢索。新的短信提供程序和 API 定義了一個適用於全部短信或彩信處理應用的標準交互模式。網絡
開發漂亮應用的新方式架構
全屏沉浸式模式:您的應用能夠利用設備屏幕上的每個像素顯示內容和捕獲觸摸事件。Android 4.4添加了新的全屏沉浸模式,讓您能夠在手機和平板上建立從一個邊緣延伸到另外一個邊緣的全出血 UI,隱藏全部系統 UI,例如狀態欄和導航欄。它適用於鮮豔的視覺內容,例如照片、視頻、地圖、書本和遊戲。
在新模式中,系統UI保持隱藏狀態,即便在用戶與您的應用或遊戲交互時,您能夠從屏幕上的任何位置(甚至在系統欄佔據的其餘位置)捕獲觸摸事件。這是您在應用或遊戲中建立更大、更加豐富和更加沉浸式的UI並減小視覺分散的絕佳方式。
爲確保用戶在全屏沉浸模式中始終能輕鬆、一致地訪問系統UI, Android 4.4 支持新的手勢。如今,在沉浸模式中,從屏幕頂部或底部邊緣滑動手指能夠顯示系統 UI。
要返回沉浸模式,用戶能夠觸摸欄界限以外的屏幕或等待一小段時間,讓欄自動隱藏。爲提供一致的用戶體驗,新的手勢還與以前隱藏狀態欄的方法配合使用。app
用於動畫場景的轉場框架:利用此轉場框架,您能夠定義場景、典型視圖層次和轉場,它們描述如何在用戶進入或退出場景時製做場景動畫或轉換場景。您可使用多種預約義的轉場類型,根據特定屬性(例如佈局界限或可見性)製做場景動畫。還有一種自動轉場類型,能夠在場景切換時自動淡出淡入、移動視圖和調整視圖大小。此外,您能夠定義自定義轉場,爲對您的應用最爲重要的屬性製做動畫,並且您能夠在必要時插入您本身的動畫樣式。
透明系統UI樣式:要使內容發揮最大做用,您如今可使用新的窗口樣式和主題請求透明系統 UI,包括狀態欄和導航欄。爲確保導航欄按鈕或狀態欄信息清晰可辨,在系統狀態欄後面顯示微妙的漸變效果。典型用例是須要顯示出壁紙的應用。
新的媒體功能
屏幕錄製:如今,能夠輕鬆地從 Android 設備直接對應用製做高質量視頻。 Android 4.4 添加了對屏幕錄製的支持,提供屏幕錄製實用程序,讓您可以在經過 USB 鏈接到 Android SDK 環境的設備上啓動和中止錄製。這是一種爲應用、測試材料、營銷視頻等建立演示和教程的絕佳新方式。
Material Design
提供擴充的UI工具包,便於在應用中集成新的設計模式。 新增的三維視圖容許設置Z維度來讓視圖元素升高偏離視圖層次並投射實體陰影。
ART運行時
Android在全新的ART運行時上獨佔運行,這個全新開發的運行時支持混合使用預先編譯(AOT)代碼、即時編譯(JIT)代碼和解析代碼。它支持 ARM、x86 和 MIPS 架構,並全面兼容 64 位。
ART 可改善應用性能和響應速度。高效的垃圾收集可減小 GC 事件的暫停次數和持續時間,讓事件可以充分適應垂直同步窗口,以免您的應用發生跳幀。ART 還能經過動態轉移內存來優化前臺使用的性能。
通知
改善通知欄,在鎖屏狀態下也能接收到通知,在來電狀態下能出如今擡頭通知中。
屏幕採集和屏幕共享
運行時權限
用戶能夠直接在運行時管理應用權限。這種模式讓用戶可以更好的瞭解和控制權限。同時爲應用開發者精簡了安裝和自動更新過程。用戶可爲所安裝的各個應用分別授予或撤銷權限。
低電耗模式和應用待機模式
取消支持Apache HTTP客戶端 Android 6.0 版移除了對 Apache HTTP 客戶端的支持。建議使用HttpURLConnection。若是繼續使用Apache HTTP API,就先在build.gradle文件中聲明編譯時依賴項:
android {
useLibrary 'org.apache.http.legacy'
}
複製代碼
文本選擇 如今,當用戶在您的應用中選擇文本時,您能夠在一個浮動工具欄中顯示「剪切」、「複製」和「粘貼」等文本選擇操做。其在用戶交互實現上與爲單個視圖啓用上下文操做模式中所述的上下文操做欄相似。
運行時
ART 運行時環境如今可正確實現 newInstance() 方法的訪問規則。此變動修正了以前版本中 Dalvik 沒法正確檢查訪問規則的問題。若是您的應用使用 newInstance() 方法,而且您想重寫訪問檢查,請調用 setAccessible() 方法(將輸入參數設置爲 true)。若是您的應用使用 v7 appcompat 庫或 v7 recyclerview 庫,則您必須更新應用以使用這些庫的最新版本。不然,請務必更新從 XML 引用的任何自定義類,以便可以訪問它們的類構造函數。
此版本更新了動態連接程序的行爲。動態連接程序如今能夠識別庫的 soname 與其路徑之間的差別(公開錯誤 6670),而且如今已實現了按 soname 搜索。以前包含錯誤的 DT_NEEDED 條目(一般是開發計算機文件系統上的絕對路徑)卻仍工做正常的應用,現在可能會出現加載失敗。
現已正確實現 dlopen(3) RTLD_LOCAL 標記。請注意,RTLD_LOCAL 是默認值,所以不顯式使用 RTLD_LOCAL 的 dlopen(3) 調用將受到影響(除非您的應用顯式使用 RTLD_GLOBAL)。使用 RTLD_LOCAL 時,在隨後經過調用 dlopen(3) 加載的庫中並不能使用這些符號(這與由 DT_NEEDED 條目引用的狀況大相徑庭)。
在以前版本的 Android 上,若是您的應用請求系統加載包含文本重定位信息的共享庫,系統會顯示警告,但仍容許加載共享庫。今後版本開始,若是您的應用的目標 SDK 版本爲 23 或更高,則系統會拒絕加載該庫。爲幫助您檢測庫是否加載失敗,您的應用應該記錄 dlopen(3) 失敗日誌,並在日誌中加入 dlerror(3) 調用返回的問題描述文本。要詳細瞭解如何處理文本重定位,請參閱此指南。
多窗口支持(原生分屏)
在運行 Android 7.0 的手機和平板電腦上,用戶能夠並排運行兩個應用,或者處於分屏模式時一個應用位於另外一個應用之上。用戶能夠經過拖動兩個應用之間的分隔線來調整應用。
通知加強功能
最大的改變是能夠在通知欄上直接對通知進行回覆。
配置文件知道的JIT/AOT編譯
在Android 7.0中,添加了即時(JIT)編譯器,對ART進行代碼分析,讓它能夠在應用運行時持續提高Android應用的性能。JIT編譯器對Android運行組件當前的Ahead of Time(AOT)編譯器進行了補充,有助於提高運行時性能,節省存儲空間,加快應用更新和系統更新速度。
配置文件指導的編譯讓 Android 運行組件可以根據應用的實際使用以及設備上的狀況管理每一個應用的 AOT/JIT 編譯。例如,Android 運行組件維護每一個應用熱方法的配置文件,而且能夠預編譯和緩存這些方法以實現最佳性能。對於應用的其餘部分,在實際使用以前不會進行編譯。
除提高應用的關鍵部分的性能外,配置文件指導的編譯還有助於減小整個 RAM 佔用,包括關聯的二進制文件。此功能對於低內存設備很是尤爲重要。
Android 運行組件在管理配置文件指導的編譯時,可最大程度下降對設備電池的影響。僅當設備處於空閒狀態和充電時才進行編譯,從而能夠經過提早執行該工做節約時間和省電。
隨時隨地低電耗模式
Android 6.0 推出了低電耗模式,即設備處於空閒狀態時,經過推遲應用的 CPU 和網絡活動以實現省電目的的系統模式,例如,設備放在桌上或抽屜裏時。如今,在 Android 7.0 中,低電耗模式又前進了一步,隨時隨地能夠省電。只要屏幕關閉了一段時間,且設備未插入電源,低電耗模式就會對應用使用熟悉的 CPU 和網絡限制。這意味着用戶即便將設備放入口袋裏也能夠省電。
Quick Settings Tile API
「快速設置」一般用於直接從通知欄顯示關鍵設置和操做,很是簡單。在 Android 7.0 中,咱們已擴展「快速設置」的範圍,使其更加有用更方便。咱們爲額外的「快速設置」圖塊添加了更多空間,用戶能夠經過向左或向右滑動跨分頁的顯示區域訪問它們。咱們還讓用戶能夠控制顯示哪些「快速設置」圖塊以及顯示的位置 — 用戶能夠經過拖放圖塊來添加或移動圖塊。
號碼屏蔽、來電過濾
通知
在Android 8.0中,從新設計通知:
通知渠道:Android 8.0中引入了通知渠道,其容許您爲要顯示的每種通知類型建立用戶可自定義的渠道。用戶界面將通知渠道稱之爲通知類別。
通知標誌:Android 8.0 引入了對在應用啓動器圖標上顯示通知標誌的支持。通知標誌可反映某個應用是否存在與其關聯、而且用戶還沒有予以清除也未對其採起行動的通知。通知標誌也稱爲通知點。
休眠:用戶能夠將通知置於休眠狀態,以便稍後從新顯示它。從新顯示時通知的重要程度與首次顯示時相同。應用能夠移除或更新已休眠的通知,但更新休眠的通知並不會使其從新顯示。
通知超時:如今,使用 setTimeoutAfter() 建立通知時您能夠設置超時。您可使用此函數指定一個持續時間,超過該持續時間後,通知應取消。若是須要,您能夠在指定的超時持續時間以前取消通知。
背景顏色:您如今能夠設置和啓用通知的背景顏色。只能在用戶必須一眼就能看到的持續任務的通知中使用此功能。例如,您能夠爲與駕車路線或正在進行的通話有關的通知設置背景顏色。您還可使用 Notification.Builder.setColor() 設置所需的背景顏色。這樣作將容許您使用 Notification.Builder.setColorized() 啓用通知的背景顏色設置。
消息樣式:如今,使用 MessagingStyle 類的通知可在其摺疊形式中顯示更多內容。對於與消息有關的通知,您應使用 MessagingStyle 類。您還可使用新的 addHistoricMessage() 函數,經過向與消息相關的通知添加歷史消息爲會話提供上下文。
自動填充框架
賬號建立、登陸和信用卡交易須要時間而且容易出錯。在使用要求執行此類重複性任務的應用時,用戶很容易遭受挫折。Android 8.0 經過引入自動填充框架,簡化了登陸和信用卡表單之類表單的填寫工做。在用戶選擇接受自動填充以後,新老應用均可使用自動填充框架。
畫中畫模式
Android 8.0容許以畫中畫 (PIP) 模式啓動操做組件。PIP 是一種特殊的多窗口模式,最經常使用於視頻播放。目前,PIP模式可用於 Android TV,而Android 8.0 則讓該功能可進一步用於其餘 Android 設備。
當某個Activity處於PIP模式時,它會處於暫停狀態,但仍應繼續顯示內容。所以,您應確保您的應用在onPause()處理程序中進行處理時不會暫停播放。相反,您應在onStop()中暫停播放視頻,並在onStart()中繼續播放。
自適應圖標
Android 8.0 引入自適應啓動器圖標。自適應圖標支持視覺效果,可在不一樣設備型號上顯示爲各類不一樣的形狀。好比有些設備應用程序圖標是方形,有些是圓形。
統一的佈局外邊距和內邊距
Android 8.0 讓您能夠更輕鬆地指定 View 元素的對邊使用相同外邊距和內邊距的情形。具體來講,您如今能夠在佈局 XML 文件中使用如下屬性:
利用Wifi RTT 進行室內定位 Android 9添加了對IEEE 802.11 mc Wi-Fi協議的平臺支持,從而讓您的應用能夠利用室內定位功能。
在運行 Android 9 且具備硬件支持的設備上,應用可使用 RTT API 來測量與附近支持 RTT 的 Wi-Fi 接入點 (AP) 的距離。 設備必須已啓用位置服務並開啓 Wi-Fi 掃描(在 Settings > Location 下),同時您的應用必須具備 ACCESS_FINE_LOCATION 權限。
設備無需鏈接到接入點便可使用 RTT。 爲了保護隱私,只有手機能夠肯定與接入點的距離;接入點無此信息。
顯示屏缺口支持(劉海屏、凹凸屏)
Android 9 支持最新的全面屏,其中包含爲攝像頭和揚聲器預留空間的屏幕缺口。 經過 DisplayCutout 類可肯定非功能區域的位置和形狀,這些區域不該顯示內容。 要肯定這些屏幕缺口區域是否存在及其位置,請使用 getDisplayCutout() 函數。
多攝像頭支持和攝像頭更新
在運行 Android 9 的設備上,您能夠經過兩個或更多物理攝像頭來同時訪問多個視頻流。] 在配備雙前置攝像頭或雙後置攝像頭的設備上,您能夠建立只配備單攝像頭的設備所不可能實現的創新功能,例如無縫縮放、背景虛化和立體成像。 經過該 API,您還能夠調用邏輯或融合的攝像頭視頻流,該視頻流可在兩個或更多攝像頭之間自動切換。
攝像頭方面的其餘改進還包括附加會話參數和 Surface 共享,前者有助於下降首次拍照期間的延遲,然後者則讓攝像頭客戶端可以處理各類用例,而無需中止並啓動攝像頭視頻流。 咱們還針對基於顯示屏的 flash 支持和 OIS 時間戳訪問新增了一些 API,用以實現應用級的圖像穩定化和特效。
適用於可繪製對象和位圖的ImageDecoder
Android 9 引入了 ImageDecoder 類,可提供現代化的圖像解碼方法。 使用該類取代 BitmapFactory 和BitmapFactory.Options API。
ImageDecoder 讓您可經過字節緩衝區、文件或 URI 來建立 Drawable 或 Bitmap。 要解碼圖像,請首先以編碼圖像的來源爲參數,調用 createSource()。 而後,經過傳遞 ImageDecoder.Source 對象來調用 decodeDrawable() 或 decodeBitmap(),從而建立 Drawable] 或 Bitmap。 要更改默認設置,請將 OnHeaderDecodedListener 傳遞給 decodeDrawable() 或 decodeBitmap()。 ImageDecoder 調用 onHeaderDecoded(),以圖像的默認寬度和高度(若已知)爲參數。 若是編碼圖像是動畫 GIF 或 WebP,decodeDrawable() 將返回 Drawable,它是 AnimatedImageDrawable 類的一個實例。
您可使用不一樣的方法來設置圖像屬性:
經過 ImageDecoder 還能夠爲圓角或圓形遮罩之類的圖像添加複雜的定製效果。 以 PostProcessor 類的一個實例做爲參數使用 setPostProcessor(),執行您所需的任何繪圖命令。
Neural Networks api 1.1
Android 8.1(API 級別 27)中引入了 Neural Networks API 以加快 Android 設備上機器學習的速度。
統一輩子物識別身份驗證對話框
在 Android 9 中,系統表明您的應用提供生物識別身份驗證對話框。 該功能可建立標準化的對話框外觀、風格和位置,讓用戶更加確信,他們在使用可信的生物識別憑據檢查程序進行身份驗證。
Foldables(可摺疊設備的UI適配+應用連續性)
基於強大的多窗口支持,Android 10能夠跨應用程序窗口擴展多任務處理,並提供屏幕連續性,以便在設備摺疊或展開時保持您的應用程序狀態。
5G網絡
5G承諾提供始終如一的更快速度和更低的延遲,Android 10增長了對5G的平臺支持,並擴展了現有的API, 以幫助您利用這些加強功能。
隱私
界面
系統
camerax 兼容到L 設備一致性 使用方便
Jetpack compose 下一代UI工具包、非綁定時、響應式、kotlin優先
Jetpack Security library 基於AES-256GCM提供文件和SharedPreference加密
benchmark library 衡量代碼性能、防止常見的測量錯誤
DataBind優化
view binding android studio 3.6 不要findviewby