Android版本迭代

Android版本發佈週期

  • 1.0 (2008年9月)
  • 1.5 (2009年4月)
  • 2.0 (2009年10月)
  • 3.0 (2011年2月)
  • 4.0 (2011年10月)
  • 5.0 (2014年10月)
  • 6.0 (2015年9月)
  • 7.0 (2016年8月)
  • 8.0 (2017年8月)
  • 9.0 (2018年5月)
  • 10.0 (2019.09)

Android 5.0特性

  • MaterialDesign設計風格
  • 支持多種設備
  • 支持64位ART虛擬機

5.0中使用了recyclerview代替了listview,它具備高度解耦,能夠自定義樣式,提供ItemAnimator,ItemDecoration,LayoutLinearLayout實現豐富多樣的效果,但也有缺點,好比須要自定義列表分割線,列表點擊事件也須要本身實現,列表分隔線經過繼承recyclerview的ItemDecoration方法安全

Android 6.0特性

  • 大量漂亮流暢的動畫
  • 指紋識別
  • 動態申請權限
  • 支持快速充電的切換
  • 支持文件夾拖拽應用
  • AndroidPay

Android 7.0特性

  • 分屏多任務
  • 加強的Java8語言模式
  • 夜間模式
  • VR支持

Android 8.0特性:

  1. 通知渠道 — Notification Channels 通知渠道是由應用自行定義的通知內容類別,藉助渠道,開發者可讓用戶對不一樣種類的通知進行精細控制,用戶能夠單獨攔截或更改每一個渠道的行爲,而不是統一管理應用的全部通知。 建立通知渠道的步驟:
    • 建立 NotificationChannel 對象,並設置應用內惟一的通知 ID。
    • 配置通知渠道的屬性,好比提示聲音等。
    • NotificationManager 中註冊通知渠道對象
  2. 畫中畫模式 — PIP Android O 現已支持 Activity 的畫中畫模式。PIP 是一種多窗口顯示模式,多用於視頻播放,即你能夠一邊發微信一邊看視頻。
    1. 關於生命週期 PIP模式不會改變 Activity 的生命週期。在指定時間只有最近與用戶交互過的 Activity 爲活動狀態。 該 Activity 將被視爲頂級 Activity。 全部其餘 Activity 雖然可見,但均處於暫停狀態。當一個 Activity 處於 PIP 模式時,其實它是出在暫停狀態,但其內容會繼續展現。
    2. API變動 在 Android O 中新增 PictureInPictureArgs 對象來指明你的 Activity 在 PIP 模式中的屬性,好比長寬比等。 Android O 還新增瞭如下方法來支持 PIP。
      • (PictureInPictureArgs args):將Activity置於 PIP 模式之下。
      • Activity.setPictureInPictureArgs():用於更新 Activity 在 PIP 模式下的設置。若是 Activity 正處於 PIP 模式之下,那麼更改的屬性將當即生效。
  3. 自適應圖標 — Adaptive Icons Android O 支持建立自適應圖標,系統能夠基於設備選擇的蒙版將這些圖標顯示爲不一樣形狀。系統還將實現與圖標的自動交互,並在啓動器、快捷方式、設置、共享對話框以及概覽屏幕中使用它們。 在之前的 Android 版本中,圖標大小定義爲 48 x 48 dp。如今你必須按照如下的規範定義你的圖層大小:
    • 兩張圖層大小都必須爲 108 x 108 dp。
    • 圖層中心 72 x 72 dp 範圍爲可視範圍。
    • 系統會保留四周外的 36dp 範圍用於生成有趣的視覺效果(如視差和跳動)。
  4. 固定快捷方式和小部件 — Pinning shortcuts Pinning shortcuts 是一個比 APP shortcuts 更小的快捷方式,放置於桌面上,用於更快速的打開某一 APP 的某單一任務。Pinning shortcuts 在桌面上可呈現不一樣的圖標顯示。
    • 首先使用 isRequestPinShortcutSupported() 方法校驗手機是否支持啓動這種快捷方式。
    • 建立 ShortcutInfo 對象。
    • 用 `requestPinShortcut() 方法應用 Pinning shortcuts。你能夠經過 PendingIntent 來通知你的 shortcuts 有沒有建立成功

Android P 新特性

  1. 室內WIFi定位
  2. 「劉海」屏幕支持
  3. 通知 從Android 7.0開始,就優化了Android通知欄的體驗。Android P還增長了許多對通知的支持,在P當中,又新增了下述功能:
    1. 支持圖像:Android P如今在手機上的消息通知中顯示圖像。您能夠在消息上使用setData()來顯示圖像。
    2. 會話參與者的簡化支持:新的Notification.Person類用於標記參與聊天的人,包括他們的頭像和URI。還有其餘的一些API,如今都用Person類做爲標誌參數而不是CharSequence。 Notification.Builder builder = new Notification.Builder(this, "a"); //新的聊天對象 Notification.Person p = new Notification.Person(); //在MessagingStyle中用Person代替了以往的CharSequence Notification.MessagingStyle messageStyle = new Notification.MessagingStyle(p); Notification.MessagingStyle.Message message = new Notification.MessagingStyle.Message("aaa", 100, p); //能夠顯示圖像了 message.setData(); messageStyle.addMessage(message); builder.setStyle(messageStyle); Notification notification = builder.build();
    3. 將回復另存爲草稿:當用戶無心中關閉消息通知時,您的應用能夠檢索系統發送EXTRA_REMOTE_INPUT_DRAFT來獲取一些信息。 肯定對話是不是羣組對話:您可使用setGroupConversation()來有目的地將對話標識爲羣組對話或非羣組對話。 爲意圖設置語義動做:setSemanticAction()方法容許您爲某個動做提供語義含義,如標記爲讀取,刪除,回覆等。
  4. 通道設置、廣播以及免打擾 Android O引入了Notification Channels,可以讓您爲要顯示的每種類型的通知建立一個用戶可自定義的頻道。 Android P經過如下更改簡化了通知渠道設置:
    • 阻止渠道:用戶如今能夠在應用的通知設置中阻止整組渠道。您可使用isBlocked()方法來肯定某個組什麼時候被阻止,不對被阻止的組發送消息。 此外,應用可使用新的getNotificationChannelGroup()方法查詢當前渠道設置。
    • 新的廣播類型:Android系統如今在通知頻道和頻道組的阻塞狀態發生變化時發送廣播。擁有被阻止的頻道或羣組的應用能夠監聽這些Intent並做出相應的反應。
    • 新的免打擾優先級類別:NotificationManager.Policy有兩個新的策略常量:PRIORITY_CATEGORY_ALARMS(按優先級排列)和PRIORITY_CATEGORY_MEDIA_SYSTEM_OTHER(優先排列媒體,系統和遊戲聲音)
  5. 新的圖片解碼 Android P新增了ImageDecoder類,爲解碼圖像提供了一種更優的方法。由此能夠用ImageDecoder來替換BitmapFactoryBitmapFactory.Options。更多使用方法請參見官方API。 String filePath = "test"; File file = new File(filePath); ImageDecoder.Source source = ImageDecoder.createSource(file); ImageDecoder.decodeBitmap(source); ImageDecoder.decodeDrawable(source, (imageDecoder, imageInfo, source1) -> { //裁剪圖像 imageDecoder.setCrop(); //調整大小 imageDecoder.setResize(); }); BitmapFactory.decodeFile(filePath);
  6. 動畫 Android P引入了一個新的AnimatedImageDrawable類來繪製和顯示GIF和WebP動畫圖像。 AnimatedImageDrawableAnimatedVectorDrawable相似,由於AnimatedImageDrawable動畫也是基於RenderThread工做的。RenderThread自己在內部使用工做線程進行解碼,所以解碼不會干擾RenderThread。 這種實現容許您的應用擁有動畫圖像,而無需管理其更新或干擾應用的UI線程。 Drawable d = ImageDecoder.decodeDrawable(...); if (d instanceof AnimatedImageDrawable) { // Prior to start(), the first frame is displayed ((AnimatedImageDrawable) d).start();   }
  7. Framework
    • AMS 從Android P開始,只有當Intent flag中指定了FLAG_ACTIVITY_NEW_TASK,才容許在非Activity場景啓動Activity。 APP必須擁有FOREGROUND_SERVICE權限,才容許使用前臺服務,不然會拋出異常。 目前不少APP開發者們對Android O的一些後臺限制行爲不太瞭解這些變動,遇到問題可能誤覺得系統問題,因此這裏說到這順便提一下關於Android O對後臺行爲的一些管控。
    • 後臺服務(Background Service)限制
      • 當進程處於後臺1分鐘後會進入idle狀態,系統中止其後臺服務,也就意味着應用處於後臺必須1分鐘內處理完收尾工做,不容許在後臺長時間監控系統,從而節省功耗;對於應用後臺執行用戶不可感知的操做,官方推薦使用JobScheduler
      • 後臺進程不容許經過startService方式啓動服務,不然當targetSdk>=26的狀況下會拋出IllegalStateException
      • 對前臺服務(Foreground Service)不會有這個限制,由於前臺服務都會掛一個前臺通知對用戶來講是可見的。Android O新增startForegroundService(),用於啓動前臺服務,但有一個限制條件就是應用必須服務啓動後5秒以內調用startForeground(),不然會拋出ANR
    • 廣播(Broadcast)限制:
      • 應用沒法使用其清單註冊的大部分隱式廣播,但部分隱式廣播是被容許的, 好比BOOT_COMPLETED, LOCALE_CHANGED等。這樣作是爲了省電和性能,防止大量APP經過監聽各類廣播來拉起本身。
      • 清單註冊的顯式廣播和動態註冊的隱式廣播依然能夠正常工做。
  • PMS 重構Package Manger,減小核心服務的代碼複雜度,將permission,intent等代碼移到單獨的類, 將user management,dex,shortcuts等不相關代碼移到子包;儘量操做本地數據,避免加鎖;同時增長單元測試。 PMS在Android O主要改動是優化啓動時間,將操做盡量並行化執行,在Android P上主要改動是掃描過程scanPackageOnly(), 下一步提取更多的子組件和類,好比Intent resolution, package verification, dexopt等,減小修改對象成員的方法。
  • WMS 在Android O上,結構化窗口對象模型和容器層次結構, 提升CTS覆蓋率並引入單元測試,SurfaceFlinger中引入層級結構用於SurfaceView,引入Task快照。在Android P上,繼續提高建立對象模型,同步APP Transitions,WindowScope工具, 過分使用Stack ID, Stack管理着相似的task和activity,特定的窗口模式,例如HOME_STACK_ID,FULLSCREEN_STACK_ID,FREEFORM_STACK_ID,這就致使同一個Stack的task和activity不容許有不一樣的窗口模式。新的方案容許有多個WindowContainers,窗口模式再也不受限於Stack ID。 採用同步的APP Transitions, animations的過程可再也不須要WMS大鎖。另外Transitions,WindowScope工具是一個相似於systrace的工具,可用於方便查看WindowManager和SurfaceFlinger,僅在userdebug版本開啓,對性能影響較小。

Android Q 新特性

  1. 隱私保護升級,給予用戶更多的地理位置控制,用戶可讓APP在使用期間獲取地理位置,不使用沒法獲取地理位置信息
  2. 用戶互動新方式:適配摺疊屏及新型屏幕
  3. 網絡鏈接:擴展了網絡鏈接堆棧,並添加一些新的API,能夠啓用高性能低延遲的自適應WiFi模式
  4. 攝像頭、媒體及圖像:新的圖片格式,動態深度;新的音頻及視頻解碼器
  5. 強化了Android 基礎:又一次提高了ART性能 例如:
    • 改進了 Android Q 中的 Zygote進程,提前開啓應用進程並將其移至安全容器中,如此一來,應用便作好了隨時啓動的準備
    • 在應用的系統啓動映像中加入了更多信息,例如類,並藉助線程管理加快映像文件的加載速度
  6. 加強了應用安全,拓展對人臉識別等被動手段支持。
  7. 兼容了公開API
  8. 現代化Android:從下半年開始,Google Play 將要求全部新應用及更新將 targetSdkVersion 設置爲 28 (Android 9 Pie)。除此之外,當用戶首次運行 API 低級低於 23 (Android Marshmallow及Android 6.0) 的應用時,會受到來自 Android Q 的警告信息。
相關文章
相關標籤/搜索