這里只總結(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樣式
-
-
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í)行以下步驟:
- 創(chuàng)建一個(gè) ConnectivityManager扑眉。
- 使用 NetworkRequest.Builder 類創(chuàng)建一個(gè) NetworkRequest 對(duì)象, 并指定您的應(yīng)用感興趣的網(wǎng)絡(luò)功能和傳輸類型赖钞。
- 要掃描合適的網(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>
-
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)試支持
-
計(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 類。
-
已棄用的 HTTP 類
-
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)用番官。
- checkSelfPermission()
-
徹底取消支持 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ù)泄漏劳殖,如它們的大小或存在性。
- 系統(tǒng)權(quán)限更改
-
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ī)范定義你的圖層大薪拔洹:
- 兩張圖層大小都必須為 108 x 108 dp。
- 圖層中心 72 x 72 dp 范圍為可視范圍锈津。
- 系統(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)顯示倾哺。
- 首先使用 isRequestPinShortcutSupported() 方法校驗(yàn)手機(jī)是否支持啟動(dòng)這種快捷方式。
- 創(chuàng)建 ShortcutInfo 對(duì)象。
- 用 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)建通知渠道的步驟:
- 創(chuàng)建 NotificationChannel 對(duì)象薯酝,并設(shè)置應(yīng)用內(nèi)唯一的通知 ID半沽。
- 配置通知渠道的屬性,比如提示聲音等
- 在 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è)備或模擬器上模擬屏幕缺口:
- 啟用開發(fā)者選項(xiàng)疲牵。
- 在 Developer options 屏幕中承二,向下滾動(dòng)至 Drawing 部分并選擇 Simulate a display with a cutout。
- 選擇屏幕缺口的大小纲爸。
注:我們建議您通過使用運(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)移步這里