Android 各版本特性總結(jié)

這里只總結(jié)了一些開發(fā)相關(guān)的重要更新

  • Android 4.4 KitKat (API 19)

    • 權(quán)限
      使用Environment.getExternalStorageDirectory();獲取外部存儲(chǔ)目錄時(shí)需要設(shè)置權(quán)限

      <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
      

      使用Environment.getDataDirectory();獲取內(nèi)部存儲(chǔ)目錄時(shí)則不需要

    • 添加轉(zhuǎn)場(chǎng)動(dòng)畫

      5.0之前啟動(dòng)Activity時(shí)使用動(dòng)畫

      startActivity(new Intent(this, Main2Activity.class));  
          overridePendingTransition(R.anim.in,R.anim.out); 
      

      對(duì)應(yīng)的入場(chǎng)

      <?xml version="1.0" encoding="utf-8"?>  
      <set xmlns:android="http://schemas.android.com/apk/res/android">  
      <translate  
          android:toYDelta="0"  
          android:fromYDelta="100%"  
          android:duration="1500"/>  
      </set>  
      

      出場(chǎng)

      <?xml version="1.0" encoding="utf-8"?>  
      <set xmlns:android="http://schemas.android.com/apk/res/android">  
      <translate  
          android:duration="1500"  
          android:fromYDelta="0"  
          android:toYDelta="-100%"/>  
      </set> 
      

      5.0之后Activity出入場(chǎng)動(dòng)畫大體分為兩種泊窘,一種分解滑動(dòng)進(jìn)入,淡入淡出台谢;另一種共享元素動(dòng)畫
      詳細(xì)介紹參考:
      傳送門

    • 添加全屏沉浸模式

    • 添加透明系統(tǒng)UI樣式

      全屏沉浸模式/透明系統(tǒng)UI樣式

  • Android 5.0 Lollipop (API 21)

    • Material Design 支持

      • Material Design 主題
      • 視圖陰影
      • RecyclerView 小部件
      • 可繪制動(dòng)畫和造型效果
      • Material Design 動(dòng)畫和 Activity 轉(zhuǎn)換效果
      • 針對(duì)基于視圖狀態(tài)的視圖屬性的動(dòng)畫生成器
      • 可自定義的 UI 小部件和具有可由您控制的調(diào)色板的應(yīng)用欄
      • 基于 XML 矢量圖形的動(dòng)畫和非動(dòng)畫可繪制對(duì)象

      具體內(nèi)容請(qǐng)參閱 Material Design

    • 對(duì) OpenGL ES 3.1 的支持
      Android 5.0 添加了 Java 接口和對(duì) OpenGLES 3.1 的原生支持莽龟。OpenGL ES 3.1 中提供的主要新功能包括:

      • 計(jì)算著色器
      • 單獨(dú)的著色器對(duì)象
      • 間接繪制命令
      • 多重采樣和模具紋理
      • 著色語言改進(jìn)
      • 高級(jí)混合模式和調(diào)試專用擴(kuò)展
      • 向后兼容 OpenGL ES 2.0 和 3.0
    • 多個(gè)網(wǎng)絡(luò)連接
      Android 5.0 提供了新的多網(wǎng)絡(luò) API,允許您的應(yīng)用動(dòng)態(tài)掃描具有特定能力的可用網(wǎng)絡(luò)地梨,并與它們建立連接菊卷。當(dāng)您的應(yīng)用需要 SUPL、彩信或運(yùn)營(yíng)商計(jì)費(fèi)網(wǎng)絡(luò)等專業(yè)化網(wǎng)絡(luò)時(shí)宝剖,或者您想使用特定類型的傳輸協(xié)議發(fā)送數(shù)據(jù)時(shí)洁闰,就可以使用此功能。

      要從您的應(yīng)用以動(dòng)態(tài)方式選擇并連接網(wǎng)絡(luò)万细,請(qǐng)執(zhí)行以下步驟:

      1. 創(chuàng)建一個(gè) ConnectivityManager扑眉。
      2. 使用 NetworkRequest.Builder 類創(chuàng)建一個(gè) NetworkRequest 對(duì)象, 并指定您的應(yīng)用感興趣的網(wǎng)絡(luò)功能和傳輸類型赖钞。
      3. 要掃描合適的網(wǎng)絡(luò)腰素,請(qǐng)調(diào)用 requestNetwork() 或 registerNetworkCallback(),并傳入 NetworkRequest 對(duì)象和 ConnectivityManager.NetworkCallback 的實(shí)現(xiàn)雪营。如果您想在檢測(cè)到合適的網(wǎng)絡(luò)時(shí)主動(dòng)切換到該網(wǎng)絡(luò)弓千,請(qǐng)使用 requestNetwork() 方法;如果只是接收已掃描網(wǎng)絡(luò)的通知而不需要主動(dòng)切換献起,請(qǐng)改用 registerNetworkCallback() 方法洋访。

      當(dāng)系統(tǒng)檢測(cè)到合適的網(wǎng)絡(luò)時(shí),它會(huì)連接到該網(wǎng)絡(luò)并調(diào)用 onAvailable() 回調(diào)谴餐。您可以使用回調(diào)中的 Network 對(duì)象來獲取有關(guān)網(wǎng)絡(luò)的更多信息姻政,或者引導(dǎo)通信使用所選網(wǎng)絡(luò)。

    • 電池使用開發(fā)者工具
      新增的 dumpsys batterystats 命令可生成值得關(guān)注的設(shè)備電池使用情況統(tǒng)計(jì)數(shù)據(jù)总寒,這些數(shù)據(jù)按唯一身份用戶 ID (UID) 加以組織扶歪。統(tǒng)計(jì)數(shù)據(jù)包括:

      • 電池相關(guān)事件的歷史記錄
      • 設(shè)備的全局統(tǒng)計(jì)數(shù)據(jù)
      • 每個(gè) UID 和系統(tǒng)組件的近似耗電情況
      • 每個(gè)應(yīng)用的每數(shù)據(jù)包移動(dòng) ms
      • 系統(tǒng) UID 匯總統(tǒng)計(jì)數(shù)據(jù)
      • 應(yīng)用 UID 匯總統(tǒng)計(jì)數(shù)據(jù)

      可使用 --help 選項(xiàng)來了解各種輸出定制選項(xiàng)的相關(guān)信息。例如,要打印設(shè)備上次充電后某個(gè)給定應(yīng)用軟件包的電池使用情況統(tǒng)計(jì)信息善镰,請(qǐng)運(yùn)行以下命令:

      $ adb shell dumpsys batterystats --charged <package-name>

      Battery Historian使用.

    • Android Runtime (ART)
      在 Android 5.0 中妹萨,ART 運(yùn)行時(shí)取代 Dalvik 成為平臺(tái)默認(rèn)設(shè)置
      有關(guān) ART 的部分主要的新功能包括:

      • 預(yù)先 (AOT) 編譯
      • 改進(jìn)的垃圾回收 (GC)
      • 改進(jìn)的調(diào)試支持

      ART 簡(jiǎn)介

    • 計(jì)劃排定作業(yè)
      Android 5.0 新增了一個(gè) JobScheduler API,允許您定義一些系統(tǒng)在稍后或指定條件下(如設(shè)備充電時(shí))以異步方式運(yùn)行的作業(yè)炫欺,從而優(yōu)化電池壽命乎完。下列情形下,作業(yè)計(jì)劃排定功能很有用:

      • 應(yīng)用具有不面向用戶并且可以推遲的作業(yè)
      • 應(yīng)用具有您更愿意在設(shè)備插入電源時(shí)再進(jìn)行的作業(yè)
      • 應(yīng)用具有一項(xiàng)需要接入網(wǎng)絡(luò)或連接 WLAN 的任務(wù)品洛。
      • 應(yīng)用具有多項(xiàng)您希望定期以批處理方式運(yùn)行的任務(wù)树姨。

      要查看如何使用JobScheduler API 的示例,請(qǐng)參閱此版本中的 JobSchedulerSample 實(shí)現(xiàn)示例

    • 應(yīng)用使用情況統(tǒng)計(jì)信息
      現(xiàn)在可以利用新增的 android.app.usage API 訪問 Android 設(shè)備上的應(yīng)用使用歷史記錄桥状。此 API 提供比已棄用的 getRecentTasks() 方法更為詳細(xì)的使用信息帽揪。要使用此 API,您必須先在清單中聲明 "android.permission.PACKAGE_USAGE_STATS" 權(quán)限辅斟。用戶還必須通過 Settings > Security > Apps 為該應(yīng)用啟用訪問使用情況的權(quán)限转晰。

    • Android NDK 中的 64 位支持

    • WebView 更新增強(qiáng)了穩(wěn)定性

  • Android 5.1 (API 22)

    • 已棄用的 HTTP 類
      Android 5.1 中新增URLConnection 類代替org.apache.http 類和 android.net.http.AndroidHttpClient 類。
  • Android 6.0 Marshmallow (API 23)

    • 低電耗模式和應(yīng)用待機(jī)模式

    • BoringSSL

    • 硬件標(biāo)識(shí)符訪問權(quán)

    • 音頻管理器變更

    • Android 密鑰庫不再支持 DSA士飒。但仍支持 ECDSA

    • WLAN 和網(wǎng)絡(luò)連接變更

    • 相機(jī)服務(wù)變更

    • APK 驗(yàn)證

    • USB 連接

    • 支持文本選擇

    • 運(yùn)行時(shí)請(qǐng)求權(quán)限
      此版本引入了一種新的權(quán)限模式查邢,戶可直接在運(yùn)行時(shí)管理應(yīng)用權(quán)限。這種模式讓用戶能夠更好地了解和控制權(quán)限酵幕,同時(shí)為應(yīng)用開發(fā)者精簡(jiǎn)了安裝和自動(dòng)更新過程扰藕。用戶可為所安裝的各個(gè)應(yīng)用分別授予或撤銷權(quán)限。

      對(duì)于以 Android 6.0(API 級(jí)別 23)或更高版本為目標(biāo)平臺(tái)的應(yīng)用芳撒,需要在運(yùn)行時(shí)檢查和請(qǐng)求權(quán)限邓深。
      新增的權(quán)限相關(guān)內(nèi)容:

      • checkSelfPermission()
        要確定應(yīng)用是否已被授予權(quán)限
      • requestPermissions()
        請(qǐng)求權(quán)限

      即使您的應(yīng)用并不以 Android 6.0(API 級(jí)別 23)為目標(biāo)平臺(tái),您也應(yīng)該在新權(quán)限模式下測(cè)試您的應(yīng)用番官。

    • 徹底取消支持 Apache HTTP 客戶端
      要繼續(xù)使用 Apache HTTP API庐完,您必須先在 build.gradle 文件中聲明以下編譯時(shí)依賴項(xiàng):

       android {
             useLibrary 'org.apache.http.legacy'
       }
      
    • 通知
      此版本移除了 Notification.setLatestEventInfo() 方法。請(qǐng)改用 Notification.Builder 類來構(gòu)建通知徘熔。要重復(fù)更新通知,請(qǐng)重復(fù)使用 Notification.Builder 實(shí)例淆党。調(diào)用 build() 方法可獲取更新后的 Notification 實(shí)例酷师。

  • Android 7.0 Nougat (API 24)

    • 在應(yīng)用間文件共享權(quán)限控制

    • 多窗口支持

    • 通知欄快捷回復(fù)

    • 支持VR

    • 畫中畫

    • App快捷菜單

    • 電池和內(nèi)存
      低電耗模式

    • 引入JIT編譯器

    • APK signature scheme v2
      Android 7.0 引入一項(xiàng)新的應(yīng)用簽名方案 APK Signature Scheme v2,它能提供更快的應(yīng)用安裝時(shí)間和更多針對(duì)未授權(quán) APK 文件更改的保護(hù)染乌。在默認(rèn)情況下山孔,Android Studio 2.2 和 Android Plugin for Gradle 2.2 會(huì)使用 APK Signature Scheme v2 和傳統(tǒng)簽名方案來簽署您的應(yīng)用。
      此方案并非強(qiáng)制荷憋!

    • OpenGL? ES 3.2 API
      Android 7.0 添加了框架接口和對(duì) OpenGL ES 3.2 的平臺(tái)支持

    • SurfaceView
      從 Android 7.0 開始台颠,建議使用 SurfaceView 代替 TextureView,以實(shí)現(xiàn)省電。

    • Project Svelte:后臺(tái)優(yōu)化
      Android 7.0 移除了三項(xiàng)隱式廣播串前,以幫助優(yōu)化內(nèi)存使用和電量消耗瘫里。此項(xiàng)變更很有必要,因?yàn)殡[式廣播會(huì)在后臺(tái)頻繁啟動(dòng)已注冊(cè)偵聽這些廣播的應(yīng)用荡碾。刪除這些廣播可以顯著提升設(shè)備性能和用戶體驗(yàn)谨读。

    • 權(quán)限更改

      • 系統(tǒng)權(quán)限更改
        為了提高私有文件的安全性,面向 Android 7.0 或更高版本的應(yīng)用私有目錄被限制訪問 (0700)坛吁。此設(shè)置可防止私有文件的元數(shù)據(jù)泄漏劳殖,如它們的大小或存在性。
  • Android 8.0 Oreo (API 26)

    • 畫中畫模式 PIP

      PIP 是一種多窗口顯示模式拨脉,多用于視頻播放哆姻,即你可以一邊發(fā)微信一邊看視頻。

      PIP 模式不會(huì)改變 Activity 的生命周期玫膀。在指定時(shí)間只有最近與用戶交互過的 Activity 為活動(dòng)狀態(tài)填具。 該 Activity 將被視為頂級(jí) Activity。 所有其他 Activity 雖然可見匆骗,但均處于暫停狀態(tài)劳景。當(dāng)一個(gè) Activity 處于 PIP 模式時(shí),其實(shí)它是出在暫停狀態(tài)碉就,但其內(nèi)容會(huì)繼續(xù)展示盟广。

      Activity 可以使用 PIP 模式,請(qǐng)?jiān)谇鍐沃袑?android:supportsPictureInPicture 設(shè)置為 true

    • 自適應(yīng)圖標(biāo) Adaptive Icons

      • 自適應(yīng)圖標(biāo)支持多種形狀

        通過定義兩張圖層(前景與背景)你可以制定你的桌面圖標(biāo)外觀瓮钥,你必須提供沒有形狀和陰影的 PNG 格式圖象作為圖層筋量。

      • 自適應(yīng)圖標(biāo)由兩張圖層和一個(gè)形狀來定義

        在以前的 Android 版本中,圖標(biāo)大小定義為 48 x 48 dp〉锵ǎ現(xiàn)在你必須按照以下的規(guī)范定義你的圖層大薪拔洹:

        1. 兩張圖層大小都必須為 108 x 108 dp。
        2. 圖層中心 72 x 72 dp 范圍為可視范圍锈津。
        3. 系統(tǒng)會(huì)保留四周外的 36dp 范圍用于生成有趣的視覺效果(如視差和跳動(dòng))
      • 創(chuàng)建你的自適應(yīng)圖標(biāo)

        首先你需要在 Application 標(biāo)簽中加入 Android:icon 屬性呀酸,定義你的 icon 圖標(biāo)。其次如果你需要?jiǎng)?chuàng)建一個(gè)原型的 icon琼梆,你還需要加入 Android:roundIcon 屬性性誉。
        接下來,你需要 res/mipmap-anydpi/ic_launcher.xml 文件中定義您的圖層茎杂。在 選項(xiàng)中加入您的前景和背景圖

    • 固定快捷方式和小部件 — Pinning shortcuts

      Pinning shortcuts 是一個(gè)比 APP shortcuts 更小的快捷方式错览,放置于桌面上,用于更快速的打開某一 APP 的某單一任務(wù)煌往。Pinning shortcuts 在桌面上可呈現(xiàn)不同的圖標(biāo)顯示倾哺。

      1. 首先使用 isRequestPinShortcutSupported() 方法校驗(yàn)手機(jī)是否支持啟動(dòng)這種快捷方式。
      2. 創(chuàng)建 ShortcutInfo 對(duì)象。
      3. 用 requestPinShortcut() 方法應(yīng)用 Pinning shortcuts羞海。你可以通過 PendingIntent 來通知你的 shortcuts 有沒有創(chuàng)建成功忌愚。
    • 內(nèi)容刷新請(qǐng)求
      ContentProvider 和 ContentResolver 類均包含 refresh() 函數(shù),這樣扣猫,客戶端可以更輕松地知道所請(qǐng)求的信息是否為最新信息菜循。

    • 最大屏幕縱橫比
      以 Android 7.1(API 級(jí)別 25)或更低版本為目標(biāo)平臺(tái)的應(yīng)用默認(rèn)的最大屏幕縱橫比為 1.86。針對(duì) Android 8.0 或更高版本的應(yīng)用沒有默認(rèn)的最大縱橫比申尤。如果您的應(yīng)用需要設(shè)置最大縱橫比癌幕,請(qǐng)使用定義您的操作組件的清單文件中的 maxAspectRatio 屬性。

    • JobScheduler 改進(jìn)
      Android 8.0 引入了對(duì) JobScheduler 的多項(xiàng)改進(jìn)昧穿。由于您通成自叮可以使用計(jì)劃作業(yè)替代現(xiàn)在受限的后臺(tái)服務(wù)或隱式廣播接收器,這些改進(jìn)可以讓您的應(yīng)用更輕松地符合新的后臺(tái)執(zhí)行限制

    • findViewById() 簽名變更
      現(xiàn)在时鸵,findViewById() 函數(shù)的全部實(shí)例均返回 <T extends View> T胶逢,而不是 View。

    • 通知
      重新設(shè)計(jì)通知饰潜,以便為管理通知行為和設(shè)置提供更輕松和更統(tǒng)一的方式

      通知渠道是由應(yīng)用自行定義的通知內(nèi)容類別初坠,借助渠道,開發(fā)者可以讓用戶對(duì)不同種類的通知進(jìn)行精細(xì)控制彭雾,用戶可以單獨(dú)攔截或更改每個(gè)渠道的行為碟刺,而不是統(tǒng)一管理應(yīng)用的所有通知。

      創(chuàng)建通知渠道的步驟:

      1. 創(chuàng)建 NotificationChannel 對(duì)象薯酝,并設(shè)置應(yīng)用內(nèi)唯一的通知 ID半沽。
      2. 配置通知渠道的屬性,比如提示聲音等
      3. 在 NotificationManager 中注冊(cè)通知渠道對(duì)象吴菠。
    • Background Execution Limits

      • 對(duì)Background Service 的限制

        當(dāng)一個(gè)應(yīng)用程序在前臺(tái)的時(shí)候者填,可以自由運(yùn)行Foreground 和Background service。但是當(dāng)應(yīng)用程序切換到后臺(tái)的時(shí)候做葵,在開始幾分鐘所有的services都可以正常使用占哟,過幾分鐘后蜂挪,系統(tǒng)將會(huì)停止所有的Background service棠涮,就好比調(diào)用了Service.stopSelf( ) 。

        在Android O之前刺覆,創(chuàng)建一個(gè)Foreground Service的方式通常是先創(chuàng)建一個(gè)Background Service的方式严肪,再通過startForeground()的方式變?yōu)榍芭_(tái)。

        但是在Android O中,如果應(yīng)用程序運(yùn)行在后臺(tái)驳糯,那么靜不能查創(chuàng)建Background Service篇梭,同時(shí)也就不能創(chuàng)建Foreground Service。

        出于這種考慮酝枢,Android O引入了一個(gè)新的方法:

        NotificationManager.startServiceInForeground()
        

        調(diào)用這個(gè)方法就相當(dāng)于startService( )在后臺(tái)創(chuàng)建一個(gè)服務(wù)恬偷,然后立即調(diào)用的服務(wù)的startForeground( )方法使其變?yōu)镕oreground。由于新的服務(wù)從未在后臺(tái)帘睦,所以不受后臺(tái)服務(wù)的限制袍患。

      • 對(duì)Broadcast 的限制

        • 應(yīng)用不能夠再通過在AndroidManifest中聲明廣播的時(shí)候添加intent-filter來注冊(cè)廣播。

        • 不管intent是顯示還是隱式竣付,都可繼續(xù)使用Context.registerReceiver的方式注冊(cè)廣播诡延。
          具體內(nèi)容請(qǐng)查看

  • Android 9 Pie (API 28+)

    • 前臺(tái)服務(wù)
      如果應(yīng)用以 Android 9 或更高版本為目標(biāo)平臺(tái)并使用前臺(tái)服務(wù),則必須請(qǐng)求 FOREGROUND_SERVICE 權(quán)限古胆。這是普通權(quán)限肆良,因此,系統(tǒng)會(huì)自動(dòng)為請(qǐng)求權(quán)限的應(yīng)用授予此權(quán)限。

      如果以 Android 9 或更高版本為目標(biāo)平臺(tái)的應(yīng)用嘗試創(chuàng)建前臺(tái)服務(wù)且未請(qǐng)求 FOREGROUND_SERVICE,則系統(tǒng)會(huì)拋出 SecurityException迂求。

    • 顯示屏缺口支持
      Android 9 支持最新的全面屏应媚,其中包含為攝像頭和揚(yáng)聲器預(yù)留空間的屏幕缺口。通過 DisplayCutout 類可確定非功能區(qū)域的位置和形狀扎拣,這些區(qū)域不應(yīng)顯示內(nèi)容。要確定這些屏幕缺口區(qū)域是否存在及其位置,請(qǐng)使用 getDisplayCutout() 函數(shù)曲秉。
      全新的窗口布局屬性 layoutInDisplayCutoutMode 讓您的應(yīng)用可以為設(shè)備屏幕缺口周圍的內(nèi)容進(jìn)行布局。您可以將此屬性設(shè)為下列值之一:

      • LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT
      • LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES
      • LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER

      可以按以下方法在任何運(yùn)行 Android 9 的設(shè)備或模擬器上模擬屏幕缺口:

      1. 啟用開發(fā)者選項(xiàng)疲牵。
      2. 在 Developer options 屏幕中承二,向下滾動(dòng)至 Drawing 部分并選擇 Simulate a display with a cutout。
      3. 選擇屏幕缺口的大小纲爸。

      注:我們建議您通過使用運(yùn)行 Android 9 的設(shè)備或模擬器測(cè)試屏幕缺口周圍的內(nèi)容顯示亥鸠。

    • 適用于可繪制對(duì)象和位圖的 ImageDecoder
      Android 9 引入了 ImageDecoder 類,可提供現(xiàn)代化的圖像解碼方法识啦。使用該類取代 BitmapFactory 和 BitmapFactory.Options API负蚊。

    • 動(dòng)畫
      Android 9 引入了 AnimatedImageDrawable 類,用于繪制和顯示 GIF 和 WebP 動(dòng)畫圖像

    • DEX 文件的 ART 提前轉(zhuǎn)換
      在運(yùn)行 Android 9 或更高版本的設(shè)備上颓哮,Android 運(yùn)行時(shí) (ART) 提前編譯器通過將應(yīng)用軟件包中的 DEX 文件轉(zhuǎn)換為更緊湊的表示形式家妆,進(jìn)一步優(yōu)化了壓縮的 Dalvik Executable 格式 (DEX) 文件。此項(xiàng)變更可讓您的應(yīng)用啟動(dòng)更快并消耗更少的磁盤空間和內(nèi)存冕茅。

      這種改進(jìn)特別有利于磁盤 I/O 速度較慢的低端設(shè)備伤极。

    • 對(duì)使用非 SDK 接口的限制
      幫助確保應(yīng)用穩(wěn)定性和兼容性蛹找,此平臺(tái)對(duì)某些非 SDK 函數(shù)和字段的使用進(jìn)行了限制;無論您是直接訪問這些函數(shù)和字段哨坪,還是通過反射或 JNI 訪問庸疾,這些限制均適用。
      針對(duì)非 SDK 接口的限制

    • 渠道設(shè)置当编、廣播和請(qǐng)勿打擾

    • 強(qiáng)制執(zhí)行 FLAG_ACTIVITY_NEW_TASK 要求
      在 Android 9 中届慈,您不能從非 Activity 環(huán)境中啟動(dòng) Activity,除非您傳遞 Intent 標(biāo)志 FLAG_ACTIVITY_NEW_TASK忿偷。 如果您嘗試在不傳遞此標(biāo)志的情況下啟動(dòng) Activity金顿,則該 Activity 不會(huì)啟動(dòng),系統(tǒng)會(huì)在日志中輸出一則消息牵舱。

      注:在 Android 7.0(API 級(jí)別 24)之前串绩,標(biāo)志要求一直是期望的行為并被強(qiáng)制執(zhí)行。 Android 7.0 中的一個(gè)錯(cuò)誤會(huì)臨時(shí)阻止實(shí)施標(biāo)志要求芜壁。

    • 默認(rèn)啟用網(wǎng)絡(luò)傳輸層安全協(xié)議 (TLS)
      如果您的應(yīng)用以 Android 9 或更高版本為目標(biāo)平臺(tái)礁凡,則 isCleartextTrafficPermitted() 方法默認(rèn)返回 false。如果您的應(yīng)用需要針對(duì)特定網(wǎng)域啟用明文慧妄,則您必須在應(yīng)用的網(wǎng)絡(luò)安全配置中顷牌,針對(duì)這些網(wǎng)域明確將 cleartextTrafficPermitted 設(shè)置為 true。

    • 視圖焦點(diǎn)
      0 面積的視圖(即寬度或高度為 0)無法再被聚焦塞淹。

      此外窟蓝,Activity 不會(huì)再在輕觸模式下隱式分配初始焦點(diǎn),而是需要由您根據(jù)需要顯式請(qǐng)求初始焦點(diǎn)饱普。

  • Android 10 Q (API 29)

    • ART 優(yōu)化
      在 ART 運(yùn)行時(shí)方面的改進(jìn)可幫助您的應(yīng)用更快地啟動(dòng)运挫、占用更少的內(nèi)存并更順暢地運(yùn)行,而您無需執(zhí)行任何操作套耕。借助 Google Play 提供的 ART 配置文件谁帕,ART 在應(yīng)用運(yùn)行之前就可以預(yù)先編譯應(yīng)用組件。在運(yùn)行時(shí)冯袍,Android 10 向 ART 的并發(fā)復(fù)制 (CC) 垃圾回收器添加了分代垃圾回收功能匈挖,以節(jié)省垃圾回收的時(shí)間并提高 CPU 效率,減少卡頓康愤,同時(shí)幫助應(yīng)用在低端設(shè)備上更順暢地運(yùn)行儡循。

    • 限制非 SDK 接口
      為了幫助確保應(yīng)用的穩(wěn)定性和兼容性,Android 平臺(tái)開始限制應(yīng)用在 Android 9(API 級(jí)別 28)中使用非 SDK 接口征冷。Android 10 包含更新后的受限制非 SDK 接口列表(基于與 Android 開發(fā)者之間的協(xié)作以及最新的內(nèi)部測(cè)試)择膝。我們的目標(biāo)是在限制使用非 SDK 接口之前確保有可用的公開替代方案。

      如果您不打算以 Android 10(API 級(jí)別 29)為目標(biāo)平臺(tái)检激,那么其中一些變更可能不會(huì)立即對(duì)您產(chǎn)生影響调榄。雖然您目前仍然可以使用灰名單中的一些非 SDK 接口(取決于您的應(yīng)用的目標(biāo) API 級(jí)別)踊赠,但如果您使用任何非 SDK 方法或字段呵扛,則應(yīng)用無法運(yùn)行的風(fēng)險(xiǎn)終歸較高每庆。

      如果您不確定自己的應(yīng)用是否使用了非 SDK 接口,則可以測(cè)試該應(yīng)用今穿,進(jìn)行確認(rèn)缤灵。如果您的應(yīng)用依賴于非 SDK 接口,則應(yīng)該開始計(jì)劃遷移到 SDK 替代方案蓝晒。不過腮出,我們知道某些應(yīng)用具有使用非 SDK 接口的有效用例。如果您無法為應(yīng)用中的某項(xiàng)功能找到使用非 SDK 接口的替代方案芝薇,則應(yīng)該請(qǐng)求新的公共 API胚嘲。

      要了解詳情,請(qǐng)參閱 Android 10 中有關(guān)限制非 SDK 接口的更新以及針對(duì)非 SDK 接口的限制洛二。

    • android.preference 庫已棄用
      從 Android 10 開始馋劈,將棄用 android.preference 庫。開發(fā)者應(yīng)該改為使用 AndroidX preference 庫晾嘶,這是 Android Jetpack 的一部分妓雾。(https://developer.android.google.cn/preview?)

    • HTTPS 連接變更

    • TLS 1.3 支持

    • 深色主題
      Android 10 提供深色主題背景,既可應(yīng)用于 Android 系統(tǒng)界面垒迂,也可應(yīng)用于設(shè)備上運(yùn)行的應(yīng)用械姻。如需了解完整信息,請(qǐng)參閱深色主題背景机断。

    • 觸發(fā)基于 Mallinfo 的垃圾回收
      當(dāng)小型平臺(tái) Java 對(duì)象引用 C++ 堆中的大型對(duì)象時(shí)楷拳,通常只有在系統(tǒng)已回收并(舉例而言)最終確定 Java 對(duì)象后,才能回收 C++ 對(duì)象吏奸。在之前的版本中欢揖,平臺(tái)會(huì)估算與 Java 對(duì)象相關(guān)聯(lián)的許多 C++ 對(duì)象的大小。這種估算并不總是準(zhǔn)確苦丁,并且偶爾會(huì)導(dǎo)致內(nèi)存使用量大大增加浸颓,因?yàn)槠脚_(tái)無法在應(yīng)該進(jìn)行垃圾回收時(shí)完成回收。

      在 Android 10 中旺拉,垃圾回收器 (GC) 會(huì)跟蹤系統(tǒng) malloc() 分配的堆的總大小产上,以確保 malloc() 分配的大型堆始終包含在可觸發(fā) GC 的計(jì)算中。因此蛾狗,與 Java 執(zhí)行交錯(cuò)大量 C++ 分配的應(yīng)用可能會(huì)出現(xiàn)垃圾回收頻率提高的現(xiàn)象晋涣。其他應(yīng)用的頻率則可能會(huì)略有下降。

  • Android 11 // TODO: ...

具體版本信息請(qǐng)移步這里

End

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末沉桌,一起剝皮案震驚了整個(gè)濱河市谢鹊,隨后出現(xiàn)的幾起案子算吩,更是在濱河造成了極大的恐慌,老刑警劉巖佃扼,帶你破解...
    沈念sama閱讀 218,284評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件偎巢,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡兼耀,警方通過查閱死者的電腦和手機(jī)压昼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來瘤运,“玉大人窍霞,你說我怎么就攤上這事≌兀” “怎么了但金?”我有些...
    開封第一講書人閱讀 164,614評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)郁季。 經(jīng)常有香客問我冷溃,道長(zhǎng),這世上最難降的妖魔是什么巩踏? 我笑而不...
    開封第一講書人閱讀 58,671評(píng)論 1 293
  • 正文 為了忘掉前任秃诵,我火速辦了婚禮,結(jié)果婚禮上塞琼,老公的妹妹穿的比我還像新娘菠净。我一直安慰自己,他們只是感情好彪杉,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評(píng)論 6 392
  • 文/花漫 我一把揭開白布毅往。 她就那樣靜靜地躺著,像睡著了一般派近。 火紅的嫁衣襯著肌膚如雪攀唯。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,562評(píng)論 1 305
  • 那天渴丸,我揣著相機(jī)與錄音侯嘀,去河邊找鬼。 笑死谱轨,一個(gè)胖子當(dāng)著我的面吹牛戒幔,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播土童,決...
    沈念sama閱讀 40,309評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼诗茎,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了献汗?” 一聲冷哼從身側(cè)響起敢订,我...
    開封第一講書人閱讀 39,223評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤王污,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后楚午,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體昭齐,經(jīng)...
    沈念sama閱讀 45,668評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評(píng)論 3 336
  • 正文 我和宋清朗相戀三年醒叁,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了司浪。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,981評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡把沼,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出吁伺,到底是詐尸還是另有隱情饮睬,我是刑警寧澤,帶...
    沈念sama閱讀 35,705評(píng)論 5 347
  • 正文 年R本政府宣布篮奄,位于F島的核電站捆愁,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏窟却。R本人自食惡果不足惜昼丑,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望夸赫。 院中可真熱鬧菩帝,春花似錦、人聲如沸茬腿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽切平。三九已至握础,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間悴品,已是汗流浹背禀综。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留苔严,地道東北人定枷。 一個(gè)月前我還...
    沈念sama閱讀 48,146評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像邦蜜,于是被迫代替她去往敵國(guó)和親依鸥。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,139評(píng)論 25 707
  • 原文地址(QQ音樂微信公眾號(hào)首發(fā)): https://mp.weixin.qq.com/s?__biz=MzI1N...
    Shawn_Dut閱讀 1,145評(píng)論 0 7
  • 1.什么是Activity?問的不太多姐扮,說點(diǎn)有深度的 四大組件之一,一般的,一個(gè)用戶交互界面對(duì)應(yīng)一個(gè)activit...
    JoonyLee閱讀 5,734評(píng)論 2 51
  • 小的時(shí)候, 家衣吠,是母親手里的紡線茶敏。 在每個(gè)冰冷或炎熱的夜晚, 母親的手里缚俏, 總扯著根細(xì)細(xì)長(zhǎng)長(zhǎng)的紡線惊搏。 母親干一天的...
    青青梅苑閱讀 732評(píng)論 17 52
  • 在學(xué)駕駛汽車 用四肢敲打想要與我對(duì)比的機(jī)器 烈日無情所以毫不留情 人類發(fā)明一切使自己變懶 邪惡的人和正義的人皆同意...
    一頁北風(fēng)閱讀 219評(píng)論 0 3