編輯:關於Android編程
- 多窗口支持
- 通知
- JIT/AOT 編譯
- 快速的應用安裝路徑
- 外出瞌睡模式
- 後台優化
- Data Saver
- 快速設置圖塊 API
- 號碼屏蔽
- 來電過濾
- 區域設置和語言
- Android 中的 ICU4J API
- OpenGL ES 3.2 API
- Android TV 錄制
- Android for Work
- 輔助工具
- 直接啟動
- 密鑰認證
- 網絡安全性配置
- 默認受信任的 CA
- APK signature scheme v2
- 作用域目錄訪問
Android N 仍處於活動的開發狀態,但現在您可以將其作為 N Developer Preview 的一部分進行試用。以下部分重點介紹面向開發者的部分新功能。
請務必查閱行為變更以了解平台變更可能影響您的應用的領域,看看開發者指南,了解有關關鍵功能的更多信息,並下載API 參考以獲取新 API 的詳細信息。
在 Android N 中,我們為該平台引入了一個新的而且非常需要的多任務處理功能 — 多窗口支持。
現在,用戶可以一次在屏幕上打開兩個應用。
多窗口支持為您提供新的吸引用戶方式,特別是在平板電腦和其他更大屏幕的設備上。您甚至可以在您的應用中啟用拖放,從而使用戶可以方便地將內容拖放到您的應用或從其中拖出內容—這是一個非常好的增強用戶體驗的方式。
向您的應用添加多窗口支持並配置多窗口顯示的處理方式非常簡單。例如,您可以指定您的 Activity 允許的最小尺寸,從而防止用戶將 Activity 調整到該尺寸以下。您還可以為應用禁用多窗口顯示,這可確保系統將僅以全屏模式顯示應用。
如需了解詳細信息,請參閱多窗口支持開發者文檔。
在 Android N 中,我們重新設計了通知,使其更易於使用並且速度更快。部分變更包括:
如需了解如何實現新功能的信息,請參閱通知指南。
在 Android N 中,我們添加了 Just in Time (JIT) 編譯器,對 ART 進行代碼分析,讓它可以在應用運行時持續提升 Android 應用的性能。JIT 編譯器對 Android 運行組件當前的 Ahead of Time (AOT) 編譯器進行了補充,有助於提升運行時性能,節省存儲空間,加快應用更新和系統更新速度。
配置文件指導的編譯讓 Android 運行組件能夠根據應用的實際使用以及設備上的情況管理每個應用的 AOT/JIT 編譯。例如,Android 運行組件維護每個應用的熱方法的配置文件,並且可以預編譯和緩存這些方法以實現最佳性能。對於應用的其他部分,在實際使用之前不會進行編譯。
除提升應用的關鍵部分的性能外,配置文件指導的編譯還有助於減少整個 RAM 占用,包括關聯的二進制文件。此功能對於低內存設備非常尤其重要。
Android 運行組件在管理配置文件指導的編譯時,可最大程度降低對設備電池的影響。僅當設備處於空閒狀態和充電時才進行編譯,從而可以通過提前執行該工作節約時間和省電。
Android 運行組件的 JIT 編譯器最實際的好處之一是應用安裝和系統更新的速度。即使在 Android 6.0 中需要幾分鐘進行優化和安裝的大型應用,現在只需幾秒鐘就可以完成安裝。系統更新也變得更快,因為省去了優化步驟。
Android 6.0 推出了瞌睡模式,即設備處於空閒狀態時,通過推遲應用的 CPU 和網絡活動以實現省電目的的系統模式,例如,設備放在桌上或抽屜裡時。
現在,在 Android N 中,瞌睡模式又前進了一步,在外出時也可以省電。只要屏幕關閉了一段時間,且設備未插入電源,瞌睡模式就會對應用使用熟悉的 CPU 和網絡限制。這意味著用戶即使將設備放入口袋裡也可以省電。
屏幕關閉片刻後,設備在使用電池時,瞌睡模式將限制網絡訪問,同時延遲作業和同步。在短暫的維護時間范圍後,其允許應用訪問網絡,並執行延遲的作業/同步。打開屏幕或將設備插入電源會使設備退出瞌睡模式。
當設備再次處於靜止狀態時,屏幕關閉且使用電池一段時間,瞌睡模式針對PowerManager.WakeLock
,AlarmManager
警報和 GPS/Wi-Fi 掃描應用完整 CPU 和網絡限制。
無論設備是否處於運動狀態,將應用調整到瞌睡模式的最佳做法均相同,因此,如果您已更新應用以妥善處理瞌睡模式,則一切就緒。如果不是,請立即開始將應用調整到瞌睡模式。
Project Svelte 在持續改善,以最大程度減少生態系統中一系列 Android 設備中系統和應用使用的 RAM。在 Android N 中,Project Svelte 注重優化在後台中運行應用的方式。
後台處理是大多數應用的一個重要部分。處理得當,可讓您實現非常棒的用戶體驗 — 即時、快速和情境感知。如果處理不得當,後台處理會毫無必要地消耗 RAM(和電池),同時影響其他應用的系統性能。
自 Android 5.0 發布以來,JobScheduler
已成為執行後台工作的首選方式,其工作方式有利於用戶。應用可以在安排作業的同時允許系統基於內存、電源和連接情況進行優化。JobScheduler 可實現控制和簡潔性,我們想要所有應用都使用它。
另一個非常好的選擇是GCMNetworkManager
(Google Play 服務的一部分),其在舊版 Android 中提供類似的作業安排和兼容性。
我們在繼續擴展JobScheduler
和GCMNetworkManager
,以符合多個用例 — 例如,在 Android N 中,現在,您可以基於內容提供程序中的更改安排後台工作。同時,我們開始棄用一些較舊的模式,這些模式會降低系統性能,特別是低內存設備的系統性能。
在 Android N 中,我們刪除了三個常用隱式廣播 —CONNECTIVITY_ACTION
、ACTION_NEW_PICTURE
和ACTION_NEW_VIDEO
— 因為這些廣播可能會一次喚醒多個應用的後台進程,同時會耗盡內存和電池。如果您的應用收到這些廣播,請充分利用 N Developer Preview 以遷移到JobScheduler
和相關的 API。
如需了解詳情,請查看後台優化文檔。
在移動設備的整個生命周期,蜂窩數據計劃的成本通常會超出設備本身的成本。對於許多用戶而言,蜂窩數據是他們想要節省的昂貴資源。
Android N 推出了 Data Saver 模式,這是一項新的系統服務,有助於減少應用使用的蜂窩數據,無論是在漫游,賬單周期即將結束,還是使用少量的預付費數據包。Data Saver 讓用戶可以控制應用使用蜂窩數據的方式,同時讓開發者打開 Data Saver 時可以提供更多有效的服務。
用戶在Settings中啟用 Data Saver 且設備位於按流量計費的網絡上時,系統屏蔽後台數據使用,同時指示應用在前台盡可能使用較少的數據 — 例如,通過限制用於流媒體服務的比特率、降低圖片質量、延遲最佳的預緩沖等方法來實現。用戶可以將特定應用加入白名單以允許後台按流量的數據使用,即使在打開 Data Saver 時也是如此。
Android N 擴展了ConnectivityManager
,以便為應用檢索用戶的 Data Saver 首選項並監控首選項變更提供一種方式。所有應用均應檢查用戶是否已啟用 Data Saver 並努力限制前台和後台數據的使用。
“快速設置”通常用於直接從通知欄顯示關鍵設置和操作,非常簡單。在 Android N 中,我們已擴展“快速設置”的范圍,使其更加有用更方便。
我們為額外的“快速設置”圖塊添加了更多空間,用戶可以通過向左或向右滑動跨分頁的顯示區域訪問它們。我們還讓用戶可以控制顯示哪些“快速設置”圖塊以及顯示的位置 — 用戶可以通過拖放圖塊來添加或移動圖塊。
對於開發者,Android N 還添加了一個新的 API,從而讓您可以定義自己的“快速設置”圖塊,使用戶可以輕松訪問您應用中的關鍵控件和操作。
對於急需或頻繁使用的控件和操作,保留“快速設置”圖塊,且不應將其用作啟動應用的快捷方式。
定義圖塊後,您可以將它們顯示給用戶,用戶可通過拖放將圖塊添加到“快速設置”。
如需創建應用圖塊的更多信息,請參閱可下載的API 參考中的android.service.quicksettings.Tile
。
Android N 現在支持在平台中進行號碼屏蔽,提供框架 API,讓服務提供商可以維護屏蔽的號碼列表。默認短信應用、默認手機應用和提供商應用可以對屏蔽的號碼列表進行讀取和寫入操作。其他應用則無法訪問此列表。
通過使號碼屏蔽成為平台的標准功能,Android 為應用提供一致的方式來支持廣泛的設備上的號碼屏蔽。應用可以利用的其他優勢包括:
此外,通過 Android 的運營商應用集成表示運營商可以讀取設備上屏蔽的號碼列表,並為用戶執行服務端屏蔽,以阻止不需要的來電和短信通過任何介質(如 VOIP 端點或轉接電話)到達用戶。
如需了解詳細信息,請參閱可下載的API 參考中的android.provider.BlockedNumberContract
。
Android N 允許默認的手機應用過濾來電。手機應用執行此操作的方式是實現新的CallScreeningService
,該方法允許手機應用基於來電的Call.Details
執行大量操作,例如:
如需了解詳細信息,請參閱可下載的API 參考中的android.telecom.CallScreeningService
。
Android N 現在允許用戶在設置中選擇多個區域設置,以更好地支持雙語用例。應用可以使用新的 API 獲取用戶選擇的區域設置,然後為多區域設置用戶提供更成熟的用戶體驗 — 如以多個語言顯示搜索結果,並且不會以用戶了解的語言翻譯網頁。
除多區域設置支持外,Android N 還擴展了用戶可用的語言范圍。它針對常用語言提供超過 25 種的變體,如英語、西班牙語、法語和阿拉伯語。它還針對 100 多種新語言添加了部分支持。
應用可以通過調用LocaleList.GetDefault()
獲取用戶設置的區域設置列表。為支持擴展的區域設置數量,Android N 正在改變其解析資源的方式。請務必使用新的資源解析邏輯測試和驗證您的應用是否能如期運行。
如需有關新資源解析行為和應遵循的最佳做法的更多信息,請參閱多語言支持。
Android N 目前在 Android 框架(位於android.icu
軟件包下)中提供ICU4JAPI 的子集。遷移很簡單,主要是需要從com.java.icu
命名空間更改為android.icu
。如果您已在您的應用中使用 ICU4J 捆綁包,切換到 Android 框架中提供的android.icu
API 可以大量節省 APK 大小。
如果要了解有關 Android ICU4J API 的更多信息,請參閱ICU4J 支持。
Android N 添加了框架接口和對 OpenGL ES 3.2 的平台支持,包括:
EXT_texture_sRGB_decode
除外)。Android N 上適用於 OpenGL ES 3.2 的框架 API 與GLES32
類一起提供。使用 OpenGL ES 3.2 時,請務必通過
標記和android:glEsVersion
屬性在您的清單文件中聲明要求。
如需了解有關使用 OpenGL ES 的信息,包括如何在運行時檢查設備支持的 OpenGL ES 版本,請參閱OpenGL ES API 指南。
Android N 通過新的錄制 API 添加了從 Android TV 輸入服務錄制和播放內容的功能。構建在現有時移 API 之上,TV 輸入服務可以控制能夠錄制的渠道數據、保存錄制的會話的方式,同時可通過錄制的內容管理用戶交互。
如需了解詳細信息,請參閱Android TV 錄制 API。
Android for Work 針對運行 Android N 的設備添加了許多新功能和 API。部分重要內容如下— 有關與 Android N 相關的 Android for Work 更新的完整列表,請參閱 Android for Work 變更。
配置文件所有者可以指定為托管配置文件中運行的應用指定單獨的安全性挑戰。當用戶嘗試打開任何工作應用時將顯示工作挑戰。成功完成安全性挑戰可解鎖托管配置文件並將其解密(如果需要)。對於配置文件所有者,ACTION_SET_NEW_PASSWORD
提示用戶設置工作挑戰,ACTION_SET_NEW_PARENT_PROFILE_PASSWORD
提示用戶設置設備鎖。
配置文件所有者可以使用setPasswordQuality()
、setPasswordMinimumLength()
和相關方法針對工作挑戰設置不同的密碼策略(例如,PIN 必須多長,或是否可以使用指紋解鎖配置文件)。配置文件所有者還可以使用新的getParentProfileInstance()
方法返回的DevicePolicyManager
實例設置設備鎖定。此外,配置文件所有者可以使用新的setOrganizationColor()
和setOrganizationName()
方法針對工作挑戰自定義憑據屏幕。
在具有托管配置文件的設備上,用戶可以切換工作模式。工作模式關閉時,管理的用戶臨時關閉,其禁用托管配置文件應用、後台同步和通知。這包括配置文件所有者應用。關閉工作模式時,系統顯示永久狀態圖標,以提醒用戶他們無法啟動工作應用。啟動器指示該工作應用和小組件無法訪問。
設備所有者和配置文件所有者可以確保工作應用始終通過指定的 VPN 連接。系統在設備啟動後自動啟動該 VPN。
新的DevicePolicyManager
方法為setAlwaysOnVpnPackage()
和getAlwaysOnVpnPackage()
。
由於 VPN 服務無需應用交互即可由系統直接綁定,因此,VPN 客戶端必須針對 Always on VPN 處理新的入口點。和以前一樣,由與操作匹配的 Intent 過濾器將服務指示給系統。android.net.VpnService
。
用戶還可以使用Settings>More>Vpn在主要用戶中手動設置實現VPNService
方法的 Always on VPN 客戶端。
Android N 現在針對新的設備設置直接在歡迎屏幕上提供“Vision Settings”。這使用戶可以更容易發現和配置他們設備上的輔助工具功能,包括放大手勢、字體大小、顯示屏尺寸和 TalkBack。
隨著這些輔助工具功能更為突出,在啟用這些功能後,您的用戶更可能試用您的應用。請務必提前啟用這些設置測試您的應用。您可以通過 Settings > Accessibility 啟用它們。
還是在 Android N 中,輔助工具服務現在可以幫助具有動作障礙的用戶觸摸屏幕。全新的 API 允許使用人臉追蹤、眼球追蹤、點掃描等功能構建服務,以滿足這些用戶的需求。
如需了解詳細信息,請參閱可下載的API 參考中的android.accessibilityservice.GestureDescription
。
直接啟動可以縮短設備啟動時間,讓注冊的應用具有有限的功能,即使在意外重啟後。例如,如果當用戶睡覺時加密的設備重啟,那麼注冊的警報、消息和來電現在可以和往常一樣繼續通知用戶。這也意味著重啟後輔助工具服務會立即可用。
在 Android N 中,直接啟動充分利用基於文件的加密,以針對系統和應用數據啟用細化的加密策略。為系統和應用數據。系統針對選定的系統數據和顯式注冊的應用數據使用設備加密的存儲。默認情況下,憑據加密的存儲可用於所有其他系統數據、用戶數據、應用及應用數據。
啟動時,系統在受限的模式中啟動,僅訪問設備加密的數據,不會對應用或數據進行常規訪問。如果您有想要在此模式下運行的組件,您可以通過在清單文件中設置標記注冊它們。重啟後,系統通過廣播LOCKED_BOOT_COMPLETED
Intent 激活注冊的組件。系統確保注冊的設備加密的應用數據在解鎖前可用。所有其他數據在用戶確認鎖定屏幕憑據進行解密前均不可用。
使用硬件支持的密鑰庫,可更安全地在 Android 設備上創建、存儲和使用加密密鑰。它們可保護密鑰免受 Linux 內核、潛在的 Android 漏洞的攻擊,也可防止從已取得 root 權限的設備提取密鑰。
為了讓硬件支持的密鑰庫使用起來更簡單和更安全,Android N 引入了密鑰認證。應用和關閉的設備可使用密鑰認證以堅決地確定 RSA 或 EC 密鑰對是否受硬件支持、密鑰對的屬性如何,以及其使用和有效性有何限制。
應用和關閉的設備服務可以通過 X.509 認證證書(必須由有效的認證密鑰簽署)請求有關密鑰對的信息。認證密鑰是一個 ECDSA 簽署密鑰,其在出廠時被注入設備的硬件支持的密鑰庫。因此,有效的認證密鑰簽署的認證證書可確認硬件支持的密鑰庫是否存在,以及該密鑰庫中密鑰對的詳細信息。
為確保設備使用安全的官方 Android 出廠映像,密鑰認證要求設備bootloader向可信執行環境 (TEE)提供以下信息:
如需了解有關硬件支持的密鑰庫功能的詳細信息,請參閱硬件支持的密鑰庫指南。
除密鑰認證外,Android N 還推出了指紋綁定密鑰,在指紋注冊時不會撤銷。
在 Android N 中,通過使用說明性網絡安全性配置(而不是使用傳統的易出錯的編程 API(例如,X509TrustManager)),應用可以安全地自定義其安全(HTTPS、TLS)連接的行為,無需任何代碼修改。
支持的功能:
如需了解詳細信息,請參閱網絡安全性配置。
默認情況下,針對 Android N 的應用僅信任系統提供的證書,且不再信任用戶添加的證書頒發機構 (CA)。如果針對 Android N 的應用希望信任用戶添加的 CA,則應使用網絡安全性配置以指定信任用戶 CA 的方式。
PackageManager 類現在支持使用 APK signature scheme v2 驗證應用。APK signature scheme v2 是一個整個文件簽名架構,通過檢測對 APK 文件進行的任何未經授權更改,可大幅提高驗證速度,同時也可加強完整性保證。
為保持向後兼容,在使用 v2 簽名架構簽署之前,APK 必須先使用 v1 簽名架構(JAR 簽名架構)簽署。對於 v2 簽名架構,如果在使用 v2 架構簽署後使用額外的證書簽署 APK,驗證將失敗。
APK signature scheme v2 支持稍後將在 N Developer Preview中推出。
在 Android N 中,應用可以使用新的 API 請求訪問特定的外部存儲目錄,包括可移動媒體上的目錄,如 SD 卡。新 API 大大簡化了應用訪問標准外部存儲目錄的方式,如Pictures
目錄。應用(如照片應用)可以使用這些 API(而不是使用READ_EXTERNAL_STORAGE
),其授予所有存儲目錄的訪問權限或存儲訪問框架,從而讓用戶可以導航到目錄。
此外,新的 API 簡化了用戶向應用授予外部存儲訪問權限的步驟。當您使用新的 API 時,系統使用一個簡單的權限 UI,其清楚地詳細介紹應用正在請求訪問的目錄。
如需了解詳細信息,請參閱作用域目錄訪問開發者文檔。
最近我嘗試使用ViewPager+GridView實現的,看起來一切正常,廢話不多說,具體代碼如下:如圖是效果圖 首先分析下思路1.首先是怎麼布局:整體是一個V
之前的博客中,我們繪制了三角形、正方形、圓形、立方體,今天我們將繪制圓錐、圓柱和球體。能夠繪制這些基本的常規幾何形體後,其他的常見幾何形體的繪制對於我們來說就基本沒問題了
雖然視覺上的反饋通常是給用戶提供信息最快的方式,但這要求用戶把注意力設備上。當用戶不能查看設備時,則需要一些其他通信的方法。Android提供了強大的文字轉語音Text-
今天在使用安卓三星S3開發時,發現數據庫老是鎖住,其他機型並未出現鎖住的問題,查看數據庫所在的文件夾發現,和db文件同名的多出了一個文件以-journal結尾的莫名其妙的