art編譯器
『壹』 art模式運行內存大,為什麼還流暢 據說在art模式下,編譯後的程序本身內存變大,運行內存RA
以前的模式是把46碼的鞋子穿在42碼的腳上,因為不合腳就在鞋裡墊滿東西,這樣就能穿上了。現在的模式是直接把46碼的鞋改裝成了42碼,改裝過程中花費了更多的資源。那麼現在哪個穿的舒服
『貳』 roid 4.4的時代,那時android還是用的dalvik虛擬機,配合的是jit編譯器just in tim
首先,在感官界面設計上,我們徹底迎來了Android系統的扁平化時代,新的系統不僅使用了新的配色,同時看起來也很時尚。未來我們相信包括三星的TouchWiz或LG的 Optimus自定義UI都會遵循Lollipop的新風格。此外,谷歌全面改善了原來乏味的通知中心,讓原生系統也擁有了像第三方插件那樣強大的功能。另外,多任務系統也加入了更多的卡片式風格,同時還有大量的其它新特性,包括64位編譯器和增強電池續航能力能。目前,除了Nexus設備之外,包括摩托羅拉、HTC等都表示旗下的智能手機大部分都支持升級到Android Lollipop,相信不就的將來我們將迎來一陣升級的熱潮。下面讓我們一起來看看Android 5.0 Lollipop新增的十個最主要變化。 1、全新Material Design設計風格 Android有史來最大改變 Lollipop十大新特性 Android Lollipop全新的設計語言是受到了多種因素影響,是一種大膽的平面化創新。換句話說,谷歌希望能夠讓Material Design給用戶帶來紙張化的體驗。新的視覺語言,在基本元素的處理上,借鑒了傳統的印刷設計,字體版式、網格系統、空間、比例、配色、圖像使用等這些基礎的平面設計規范。 另外,Material Design還推崇實體隱喻理念,利用實體的表面與邊緣的質感打造出視覺線索,讓用戶感受到真實。熟悉的觸感讓用戶可以快速的理解、認知。在設計中可以靈活的運用物質,在符合物理規律的基礎上,打造出不同的使用體驗。最後是是有意義而且更合理的動態效果,為了吸引用戶的注意力,以及維持整個系統的連續性體驗。 2、支持多種設備 現在無論是智能手機、平板電腦、筆記本電腦、智能電視、汽車、智能手錶甚至是各種家用電子產品,谷歌的Android系統已經可以在所有設備的屏幕上出現。而這一概念與微軟不謀而合,之前微軟也宣布將會把Windows 10打造成跨設備跨平台的統一系統,幫助自己走出困境。 3、全新的通知中心設計 Android有史來最大改變 Lollipop十大新特性 谷歌在Android Lollipop中加入了全新風格的通知系統。改進後的通知系統會優先顯示對用戶來說比較重要的信息,而將不太緊急的內容隱藏起來。用戶只需要向下滑動就可以查看全部的通知內容。 新的通知系統另外一個很酷的新功能是在鎖屏界面也可以直接查看通知消息了。不僅如此,用戶還可以直接在鎖屏的情況下就行回復或進入應用。另外,如果在操作手機的過程中有電話進入,也不會進行全畫面切換,而是同樣以彈出通知的方式告知用戶。 4、支持64位ART虛擬機 Android有史來最大改變 Lollipop十大新特性 新系統不僅在視覺效果上帶來了巨大的變化,Android Lollipop還在內部的性能上進行了飛躍。首先,新系統放棄了之前一直使用的Dalvik虛擬機,改用了ART模式,實現了真正的跨平台編譯,在ARM、X86、MIPS等,無處不在。 ART 虛擬機編譯器在內存佔用及應用程序載入時間上進行了大幅提升,谷歌承諾所有性能都會比原來提升一倍。另外,對64位的支持也讓ART虛擬機如魚得水,開發者可以針對像ARM Cortex-A57這樣的64位架構核心開發應用程序。Android Lollipop支持更大的寄存器,支持新的指令集,提升了內存定址空間,未來Android智能手機將支持4GB以上的內存。 5、Project Volta電池續航改進計劃 Android有史來最大改變 Lollipop十大新特性 Project Volta計劃增加了新工具可以讓開發者能夠更容易的找出為何自己的應用程序會對電量產生比較大的影響,同時確保在執行某型任務時將手機電量的影響降至最低。首先,Battery Historian可以列出手機電量消耗的詳細情況,幫助開發者識別電量消耗的原因或者是哪個硬體或任務對電池壽命的影響比較大;而Job Scheler API則可以讓開發者更容易的選擇合適的時機觸發電量消耗比較高的任務,避免在低電量或未完成充電時更新應用程序。 上面是針對開發者的改進,而在用戶層面上,Android Lollipop增加了Battery Saver模式,這與三星和HTC上的超級省電模式有些類似。在低電量的時候系統會自動降低屏幕亮度、限制自動更換背景等功能。 6、全新的「最近應用程序」 Android有史來最大改變 Lollipop十大新特性 除了界面風格設計的改變之外,新的最近應用界面還借鑒了Chrome瀏覽器的理念,採用單獨的標簽展示方式。更重要的是,谷歌已經向開發者開放了API,所以第三方開發人員可以利用這個改進為特定的應用增加全新的功能。 7、改進安全性 Android有史來最大改變 Lollipop十大新特性 現在個人識別解鎖還是一個比較新鮮的智能概念,當用戶的藍牙耳機連接到手機或平板電腦時,設備可以基於當前的位置或用戶的聲音自動解鎖。比如當特定的智能手錶出現在Android設備的附近,那麼就會直接繞過鎖屏界面進行操作。而Android Lollipop也增加了這種針對特定特任識別解鎖的模式。換句話說,當設備沒有檢測到附近有可用的信任設備時,就會啟動安全模式防止未授權訪問。 另外,Android Lollipop還默認開啟了系統數據加密功能,並且通過SELinux執行應用程序,這就意味著對於惡意軟體來說,新系統變得更加安全。 8、不同數據獨立保存 Android有史來最大改變 Lollipop十大新特性 谷歌表示Android Lollipop將擁有一個全新的特性,讓用戶通過一台設備就可以搞定所有的工作和生活娛樂活動。該特性首先將各種數據獨立保存,並且讓所有新數據的生成都有依據。 我們已經看到谷歌已經與三星加強了合作,包括三星的Knox安全系統同樣可以像Android Lollipop一樣將重要數據和其它數據分開保存。另外谷歌還允許向三星以外的Android設備提供支持。 9、改進搜索 Android有史來最大改變 Lollipop十大新特性 谷歌將新系統的搜索功能重點放在了「重新發現」上,因此這意味著Google Search將會更好的意識到用戶正在做什麼。比如系統會根據用戶當前的位置自動過濾無關的搜索結果。 另外,當用戶在進行應用搜索時,可以直接展示相似或部分提示,並且進入特定的應用程序而無需將內容全部輸入。 10、新的API支持,藍牙4.1、USB Audio、多人分享等其它特性 Android Lollipop還增加了多個新的API支持、藍牙4.1、USB Audio外接音響及多人分享等功能。其中多人分享功能可以在用戶手機丟失的情況下,使用其它Lollipop設備登錄賬戶,從雲端下載聯系人、日歷等資料,並且不影響其它設備的內容。 安卓5.0唯一的缺點就是在短期內僅支持Nexus系列以及三星、HTC、摩托羅拉等廠商的熱門機型,國內用戶想要用到安卓5.0恐怕要等很長一段時間嗎,事實上去年發布的安卓4.4至今沒有在國內普及開來。
『叄』 如何build art android
在安卓4.4中進到開發者模式里會發現多了一項「選擇運行環境」,裡面有兩個選項:Dalvik和ART。
Dalvik是之前Android系統使用的java虛擬機,那麼ART是什麼呢?
ART是一個AOT編譯器。所謂AOT (Ahead of Time)是指在運行以前就把中間代碼靜態編譯成本地代碼,而JIT (Just
inTime)則是在運行時動態編譯。
AOT和JIT比各有長處,這里不詳細展開,只簡單列舉幾個最主要的:
AOT的主要編譯過程發生於開發用機,因此編譯得慢一點沒關系,可以充分的做各種耗時的優化;JIT在運行時動態編譯,通常不能做太耗時的優化,否則影響啟動和運行速度
更具體一點,以Sun的JVM為例,JIT大體上劃分為client和server兩種模式。Client模式下VM是一邊解釋執行,一邊識別熱點
區域進行JIT編譯,以免明顯影響啟動速度;考慮到內存佔用,也不會把所有Java位元組碼都編譯成本地代碼。Server模式下則會進行全面的JIT編
譯,因為server啟動慢一點沒關系,一旦跑起來就會運行很長時間,所以花一點點時間全面優化是值得的。
因為受優化程度限制,JIT編譯出來的本地代碼體積通常比較大,5到10倍於bytecode都是正常的。AOT編譯出來的本地代碼體積更小。Android的JIT
code cache也是內存佔用的重要角色。
因為是預編譯好的機器代碼,AOT產生的代碼和載入執行過程和普通的本地代碼沒有太大分別。不過仍然需要運行時的GC支持。
雖然AOT可以有更多的時間和空間做編譯優化,但並不等於性能上就一定勝過JIT。JVM有不少東西只能在運行時動態決定是否可以採用編譯優化(如
識別可以inline的虛方法),以及運行時動態反優化(例如inline了一個虛方法,後來發現遇到新的派生類的實例,就需要取消原來的
inline)。這些事情AOT就不容易做到。
AOT的編譯器一般會分兩個版本,一個在開發機上編譯整個系統和預裝應用,另一個是一個精簡版,在設備上運行,負責編譯連接新安裝的應用。
AOT編譯出來的代碼仍然需要運行時的支持,特別是GC。
如果ART確實是用AOT compiler替換JIT,性能先不談,Android的內存佔用應該會因此獲益。現在dex代碼經過 dex =>
optimized dex => JIT cache這個過程,內存中需要同時容納odex和JIT cache兩份代碼;換成ART以後,就變成dex
=> oat,內存里只放oat就可以。不過考慮到ART的解釋器代碼里有提到deoptimization,也有可能在特定情況下還需要load
dex代碼解釋執行。重要的是oat應該是可以直接mmap執行的代碼(其實就是一個真·ELF格式的文件),載入/換頁重載入的速度都會比從odex動
態編譯來得快。
簡單的說就是以更高的執行效率來運行軟體art應該利用了LLVM
性能就提升了,另一方面預載的私有軟體也可以憑此做好保密工作,留在機器上的程序本體是機器碼了,沒有deoat了。
其實Google也在Chrome做了類似的事情。
目前的Chrome支持pNACL,也是一種以(LLVM)位元組碼發布,到本地再編譯的模式。如此能獲得接近那些直接被編譯為原生代碼的軟體的性能。
Mozilla給出的替代品是asm.js,則是用javascript引擎執行C++本機代碼。
『肆』 編譯器具體實現中比較巧妙的思想有哪些
這種做法的好處是:
可以作為解釋器性能升級的一個簡單路徑,寫解釋器的代碼而得到初級編譯器的性能。事實上JamVM的解釋器可以配置為多種實現方式:switch-threading、indirect-threading、direct-threading、inline-threading,它們的差別僅在於對opcode的dispatch方式不同;所有實現方式都共享同一份handler代碼。
這種做法的缺點是:
這樣寫得到的「編譯器」無論從代碼組織還是程序思路都還是解釋器的那套,從編譯器的角度看很別扭。它最終實現出來效果跟從編譯器角度出發的template-based JIT一樣,但我覺得後者的思路更直觀,代碼也通常更清晰一些。
這種做法仍然無法跨越位元組碼邊界做任何優化,因為每個opcode對應一個單獨的handler,而這種做法的代碼生成僅僅是把handler拷貝到一起而已。
要在它的基礎之上進一步提高性能可以直接對位元組碼序列做些簡單模式匹配,以便跨越位元組碼邊界做優化。但這樣做通常是自討苦吃,工程上很難持續下去。
『伍』 如何在android固件中預裝測試視頻
作為蘋果 iOS 8 的最大競爭對手,Google 終於在 I/O 2014 大會上正式發布了最新的 Android L 操作系統,擁有全新的 Material Design 設計風格,界面更加扁平化以及大量的改進。
雖然想用上正式搭載 Android L 的量產手機還需時日,但目前 Google 已經發布了 Android L 開發者預覽版固件,Nexus 5 或 Nexus 7 的工廠鏡像已經放出下載了。喜歡嘗鮮的朋友可以動手開刷體驗新系統了……
Android L 開發者預覽版:
新版 Android L 最大的改變是採用了全新的 Material Design 設計語言,提供了多達 5000 個軟體 API 介面,並默認採用了 ART 編譯器,這將使得系統運行更為流暢,啟動速度也更快,是此前 Dalvik 的兩倍,同時兼容 64 位處理器。因此,刷 Android L 的 ROM 應該可以提高一下手機運行效率的。
但由於目前 Android L 還處於開發者預覽版的階段,主要是面向開發人員用於測試的,穩定性沒有太大的保障,普通用戶日常使用過程中可能會遇到一些 Bug。因此只建議喜歡刷機、嘗鮮的朋友嘗試。
這次系統版本更新 Google 並沒有採用傳統的數字命名,因此並不清楚 Android L 相對 4.4 是小升級還是大革新。不過,既然擁有全新的設計外觀,起碼用戶看起來改變挺大的,谷歌換一套命名方案也是一個好辦法。
Android L 壁紙:
當然,如果你手頭上沒有 Nexus 設備,或者暫時還不想刷測試版的ROM,那麼也可以先下載 Android L 自帶的新壁紙稍微感受一下吧。
『陸』 手機條碼標簽上面的ART代表什麼意思
ART NO=article number,就是產品貨號、型號的意思,類似model number。
給每個產品編一個貨號,便於區分產品。 〈br〉其處理應用程序執行的方式完全不同於Dalvik,Dalvik是依靠一個Just-In-Time (JIT)編譯器去解釋位元組碼
『柒』 安卓4.4與安卓5.0有什麼區別哪個版本的比較好
首先,在感官界面設計上,我們徹底迎來了Android系統的扁平化時代,新的系統不僅使用了新的配色,同時看起來也很時尚。未來我們相信包括三星的TouchWiz或LG的 Optimus自定義UI都會遵循Lollipop的新風格。此外,谷歌全面改善了原來乏味的通知中心,讓原生系統也擁有了像第三方插件那樣強大的功能。另外,多任務系統也加入了更多的卡片式風格,同時還有大量的其它新特性,包括64位編譯器和增強電池續航能力能。目前,除了Nexus設備之外,包括摩托羅拉、HTC等都表示旗下的智能手機大部分都支持升級到Android Lollipop,相信不就的將來我們將迎來一陣升級的熱潮。下面讓我們一起來看看Android 5.0 Lollipop新增的十個最主要變化。
1、全新Material Design設計風格
Android有史來最大改變 Lollipop十大新特性
Android Lollipop全新的設計語言是受到了多種因素影響,是一種大膽的平面化創新。換句話說,谷歌希望能夠讓Material Design給用戶帶來紙張化的體驗。新的視覺語言,在基本元素的處理上,借鑒了傳統的印刷設計,字體版式、網格系統、空間、比例、配色、圖像使用等這些基礎的平面設計規范。
另外,Material Design還推崇實體隱喻理念,利用實體的表面與邊緣的質感打造出視覺線索,讓用戶感受到真實。熟悉的觸感讓用戶可以快速的理解、認知。在設計中可以靈活的運用物質,在符合物理規律的基礎上,打造出不同的使用體驗。最後是是有意義而且更合理的動態效果,為了吸引用戶的注意力,以及維持整個系統的連續性體驗。
2、支持多種設備
現在無論是智能手機、平板電腦、筆記本電腦、智能電視、汽車、智能手錶甚至是各種家用電子產品,谷歌的Android系統已經可以在所有設備的屏幕上出現。而這一概念與微軟不謀而合,之前微軟也宣布將會把Windows 10打造成跨設備跨平台的統一系統,幫助自己走出困境。
3、全新的通知中心設計
Android有史來最大改變 Lollipop十大新特性
谷歌在Android Lollipop中加入了全新風格的通知系統。改進後的通知系統會優先顯示對用戶來說比較重要的信息,而將不太緊急的內容隱藏起來。用戶只需要向下滑動就可以查看全部的通知內容。
新的通知系統另外一個很酷的新功能是在鎖屏界面也可以直接查看通知消息了。不僅如此,用戶還可以直接在鎖屏的情況下就行回復或進入應用。另外,如果在操作手機的過程中有電話進入,也不會進行全畫面切換,而是同樣以彈出通知的方式告知用戶。
4、支持64位ART虛擬機
Android有史來最大改變 Lollipop十大新特性
新系統不僅在視覺效果上帶來了巨大的變化,Android Lollipop還在內部的性能上進行了飛躍。首先,新系統放棄了之前一直使用的Dalvik虛擬機,改用了ART模式,實現了真正的跨平台編譯,在ARM、X86、MIPS等,無處不在。
ART 虛擬機編譯器在內存佔用及應用程序載入時間上進行了大幅提升,谷歌承諾所有性能都會比原來提升一倍。另外,對64位的支持也讓ART虛擬機如魚得水,開發者可以針對像ARM Cortex-A57這樣的64位架構核心開發應用程序。Android Lollipop支持更大的寄存器,支持新的指令集,提升了內存定址空間,未來Android智能手機將支持4GB以上的內存。
5、Project Volta電池續航改進計劃
Android有史來最大改變 Lollipop十大新特性
Project Volta計劃增加了新工具可以讓開發者能夠更容易的找出為何自己的應用程序會對電量產生比較大的影響,同時確保在執行某型任務時將手機電量的影響降至最低。首先,Battery Historian可以列出手機電量消耗的詳細情況,幫助開發者識別電量消耗的原因或者是哪個硬體或任務對電池壽命的影響比較大;而Job Scheler API則可以讓開發者更容易的選擇合適的時機觸發電量消耗比較高的任務,避免在低電量或未完成充電時更新應用程序。
上面是針對開發者的改進,而在用戶層面上,Android Lollipop增加了Battery Saver模式,這與三星和HTC上的超級省電模式有些類似。在低電量的時候系統會自動降低屏幕亮度、限制自動更換背景等功能。
6、全新的「最近應用程序」
Android有史來最大改變 Lollipop十大新特性
除了界面風格設計的改變之外,新的最近應用界面還借鑒了Chrome瀏覽器的理念,採用單獨的標簽展示方式。更重要的是,谷歌已經向開發者開放了API,所以第三方開發人員可以利用這個改進為特定的應用增加全新的功能。
7、改進安全性
Android有史來最大改變 Lollipop十大新特性
現在個人識別解鎖還是一個比較新鮮的智能概念,當用戶的藍牙耳機連接到手機或平板電腦時,設備可以基於當前的位置或用戶的聲音自動解鎖。比如當特定的智能手錶出現在Android設備的附近,那麼就會直接繞過鎖屏界面進行操作。而Android Lollipop也增加了這種針對特定特任識別解鎖的模式。換句話說,當設備沒有檢測到附近有可用的信任設備時,就會啟動安全模式防止未授權訪問。
另外,Android Lollipop還默認開啟了系統數據加密功能,並且通過SELinux執行應用程序,這就意味著對於惡意軟體來說,新系統變得更加安全。
8、不同數據獨立保存
Android有史來最大改變 Lollipop十大新特性
谷歌表示Android Lollipop將擁有一個全新的特性,讓用戶通過一台設備就可以搞定所有的工作和生活娛樂活動。該特性首先將各種數據獨立保存,並且讓所有新數據的生成都有依據。
我們已經看到谷歌已經與三星加強了合作,包括三星的Knox安全系統同樣可以像Android Lollipop一樣將重要數據和其它數據分開保存。另外谷歌還允許向三星以外的Android設備提供支持。
9、改進搜索
Android有史來最大改變 Lollipop十大新特性
谷歌將新系統的搜索功能重點放在了「重新發現」上,因此這意味著Google Search將會更好的意識到用戶正在做什麼。比如系統會根據用戶當前的位置自動過濾無關的搜索結果。
另外,當用戶在進行應用搜索時,可以直接展示相似或部分提示,並且進入特定的應用程序而無需將內容全部輸入。
10、新的API支持,藍牙4.1、USB Audio、多人分享等其它特性
Android Lollipop還增加了多個新的API支持、藍牙4.1、USB Audio外接音響及多人分享等功能。其中多人分享功能可以在用戶手機丟失的情況下,使用其它Lollipop設備登錄賬戶,從雲端下載聯系人、日歷等資料,並且不影響其它設備的內容。
『捌』 Google I/O 2016 上發布的 Android N 有哪些新特性
1.多窗口支持
在 Android N 中,我們為該平台引入了一個新的而且非常需要的多任務處理功能 — 多窗口支持。
現在,用戶可以一次在屏幕上打開兩個APP。
在運行 Android N 的手機和平板電腦上,用戶可以並排運行兩個APP,或者處於分屏模式時一個APP位於另一個APP之上。用戶可以通過拖動兩個APP之間的分隔線來調整APP。
在 Android TV 設備上,APP可以將自身置於畫中畫面模式,從而讓它們可以在用戶瀏覽或與其他APP交互時繼續顯示內容。如需了解詳細信息,請參閱下文。
多窗口支持為您提供新的吸引用戶方式,特別是在平板電腦和其他更大屏幕的設備上。您甚至可以在您的APP中啟用拖放,從而使用戶可以方便地將內容拖放到您的應用或從其中拖出內容—這是一個非常好的增強用戶體驗的方式。
向您的APP添加多窗口支持並配置多窗口顯示的處理方式非常簡單。例如,您可以指定您的 Activity 允許的最小尺寸,從而防止用戶將 Activity 調整到該尺寸以下。您還可以為APP禁用多窗口顯示,這可確保系統將僅以全屏模式顯示APP。
如需了解詳細信息,請參閱多窗口支持開發者文檔。
2.Notification 增強功能
在 Android N 中,我們重新設計了Notification,使其更易於使用並且速度更快。部分變更包括:
- 模板更新:我們正在更新Notification模板,新強調了圖片跟頭像。開發者將能夠充分利用新模板,只需進行少量的代碼調整。
- 綁定的Notification:系統可以將消息組合在一起(例如,按消息主題)並顯示組。用戶可以適當地進行 Dismiss 或 Archive 等操作。如果您已實現 Android Wear 的通知,那麼您已經很熟悉此模型。
- 直接回復:對於實時通信應用,Android 系統支持內聯回復,以便用戶可以直接在通知界面中快速回復簡訊。
- 自定義視圖:兩個新的 API 讓您在通知中使用自定義視圖時可以充分利用系統的風格,如Notification標題和操作。
如需了解如何實現新功能的信息,請參閱通知指南。
2.配置文件指導的 JIT/AOT 編譯
在 Android N 中,我們添加了 Just in Time (JIT) 編譯器,對 ART 進行代碼分析,讓它可以在應用運行時持續提升 Android 應用的性能。JIT 編譯器對 Android 運行組件當前的 Ahead of Time (AOT) 編譯器進行了補充,有助於提升運行時性能,節省存儲空間,加快應用更新和系統更新速度。
配置文件指導的編譯讓 Android 運行組件能夠根據應用的實際使用以及設備上的情況管理每個應用的 AOT/JIT 編譯。例如,Android 運行組件維護每個應用的熱方法的配置文件,並且可以預編譯和緩存這些方法以實現最佳性能。對於應用的其他部分,在實際使用之前不會進行編譯。
除提升應用的關鍵部分的性能外,配置文件指導的編譯還有助於減少整個 RAM 佔用,包括關聯的二進制文件。此功能對於低內存設備非常尤其重要。
Android 運行組件在管理配置文件指導的編譯時,可最大程度降低對設備電池的影響。僅當設備處於空閑狀態和充電時才進行編譯,從而可以通過提前執行該工作節約時間和省電。
3.快速的應用安裝路徑
Android 運行組件的 JIT 編譯器最實際的好處之一是應用安裝和系統更新的速度。即使在 Android 6.0 中需要幾分鍾進行優化和安裝的大型應用,現在只需幾秒鍾就可以完成安裝。系統更新也變得更快,因為省去了優化步驟。
4.瞌睡模式
Android 6.0 推出了瞌睡模式,即設備處於空閑狀態時,通過推遲應用的 CPU 和網路活動以實現省電目的的系統模式,例如,設備放在桌上或抽屜里時。
現在,在 Android N 中,瞌睡模式又前進了一步,在外出時也可以省電。只要屏幕關閉了一段時間,且設備未插入電源,瞌睡模式就會對應用使用熟悉的 CPU 和網路限制。這意味著用戶即使將設備放入口袋裡也可以省電。
屏幕關閉片刻後,設備在使用電池時,瞌睡模式將限制網路訪問,同時延遲作業和同步。在短暫的維護時間范圍後,其允許應用訪問網路,並執行延遲的作業/同步。打開屏幕或將設備插入電源會使設備退出瞌睡模式。
當設備再次處於靜止狀態時,屏幕關閉且使用電池一段時間,瞌睡模式針對 PowerManager.WakeLock,AlarmManager 警報和 GPS/Wi-Fi 掃描應用完整 CPU 和網路限制。
無論設備是否處於運動狀態,將應用調整到瞌睡模式的最佳做法均相同,因此,如果您已更新應用以妥善處理瞌睡模式,則一切就緒。如果不是,請立即開始將應用調整到瞌睡模式。
5.Project Svelte:後台優化
Project Svelte 在持續改善,以最大程度減少生態系統中一系列 Android 設備中系統和應用使用的 RAM。在 Android N 中,Project Svelte 注重優化在後台中運行應用的方式。
後台處理是大多數應用的一個重要部分。處理得當,可讓您實現非常棒的用戶體驗 — 即時、快速和情境感知。如果處理不得當,後台處理會毫無必要地消耗 RAM(和電池),同時影響其他應用的系統性能。
自 Android 5.0 發布以來,JobScheler 已成為執行後台工作的首選方式,其工作方式有利於用戶。應用可以在安排作業的同時允許系統基於內存、電源和連接情況進行優化。JobScheler 可實現控制和簡潔性,我們想要所有應用都使用它。
另一個非常好的選擇是 GCMNetworkManager(Google Play 服務的一部分),其在舊版 Android 中提供類似的作業安排和兼容性。
我們在繼續擴展 JobScheler 和 GCMNetworkManager,以符合多個用例 — 例如,在 Android N 中,現在,您可以基於內容提供程序中的更改安排後台工作。同時,我們開始棄用一些較舊的模式,這些模式會降低系統性能,特別是低內存設備的系統性能。
在 Android N 中,我們刪除了三個常用隱式廣播 — CONNECTIVITY_ACTION、ACTION_NEW_PICTURE 和 ACTION_NEW_VIDEO — 因為這些廣播可能會一次喚醒多個應用的後台進程,同時會耗盡內存和電池。如果您的應用收到這些廣播,請充分利用 N Developer Preview 以遷移到 JobScheler 和相關的 API。
如需了解詳情,請查看後台優化文檔。
6.Data Saver
在移動設備的整個生命周期,蜂窩數據計劃的成本通常會超出設備本身的成本。對於許多用戶而言,蜂窩數據是他們想要節省的昂貴資源。
Android N 推出了 Data Saver 模式,這是一項新的系統服務,有助於減少應用使用的蜂窩數據,無論是在漫遊,賬單周期即將結束,還是使用少量的預付費數據包。Data Saver 讓用戶可以控制應用使用蜂窩數據的方式,同時讓開發者打開 Data Saver 時可以提供更多有效的服務。
用戶在 Settings 中啟用 Data Saver 且設備位於按流量計費的網路上時,系統屏蔽後台數據使用,同時指示應用在前台盡可能使用較少的數據 — 例如,通過限制用於流媒體服務的比特率、降低圖片質量、延遲最佳的預緩沖等方法來實現。用戶可以將特定應用加入白名單以允許後台按流量的數據使用,即使在打開 Data Saver 時也是如此。
Android N 繼承了 ConnectivityManager,以便為應用檢索用戶的 Data Saver 首選項並監控首選項變更提供一種方式。所有應用均應檢查用戶是否已啟用 Data Saver 並努力限制前台和後台數據的使用。
7.快速設置Tile API
「快速設置」通常用於直接從通知欄顯示關鍵設置和操作,非常簡單。在 Android N 中,我們已擴展「快速設置」的范圍,使其更加有用更方便。
我們為額外的「快速設置」Tile添加了更多空間,用戶可以通過向左或向右滑動跨分頁的顯示區域訪問它們。我們還讓用戶可以控制顯示哪些「快速設置」Tile以及顯示的位置 — 用戶可以通過拖放Tile來添加或移動Tile。
對於開發者,Android N 還添加了一個新的 API,從而讓您可以定義自己的「快速設置」Tile,使用戶可以輕松訪問您應用中的關鍵控制項和操作。
對於急需或頻繁使用的控制項和操作,保留「快速設置」Tile,且不應將其用作啟動應用的快捷方式。
定義Tile後,您可以將它們顯示給用戶,用戶可通過拖放將Tile添加到「快速設置」。
如需創建應用Tile的更多信息,請參閱可下載的 API 參考中的 android.service.quicksettings.Tile。
8.號碼屏蔽
Android N 現在支持在平台中進行號碼屏蔽,提供框架 API,讓服務提供商可以維護屏蔽的號碼列表。默認簡訊應用、默認手機應用和提供商應用可以對屏蔽的號碼列表進行讀取和寫入操作。其他應用則無法訪問此列表。
通過使號碼屏蔽成為平台的標准功能,Android 為應用提供一致的方式來支持廣泛的設備上的號碼屏蔽。應用可以利用的其他優勢包括:
- 還會屏蔽已屏蔽的來電號碼發出的簡訊
- 通過 Backup & Restore(備份和還原)功能可以跨重置和設備保留屏蔽的號碼
- 多個應用可以使用相同的屏蔽號碼列表
此外,通過 Android 的運營商應用集成表示運營商可以讀取設備上屏蔽的號碼列表,並為用戶執行服務端屏蔽,以阻止不需要的來電和簡訊通過任何介質(如 VOIP 端點或轉接電話)到達用戶。
如需了解詳細信息,請參閱可下載的 API 參考中的 android.provider.BlockedNumberContract。
9.來電過濾
Android N 允許默認的手機應用過濾來電。手機應用執行此操作的方式是實現新的 CallScreeningService,該方法允許手機應用基於來電的 Call.Details 執行大量操作,例如:
- 拒絕來電
- 不允許來電到達呼叫日誌
- 不向用戶顯示來電通知
如需了解詳細信息,請參閱可下載的 API 參考中的 android.telecom.CallScreeningService。
10.多區域設置支持、多語言
Android N 現在允許用戶在設置中選擇多個區域設置,以更好地支持雙語用例。應用可以使用新的 API 獲取用戶選擇的區域設置,然後為多區域設置用戶提供更成熟的用戶體驗 — 如以多個語言顯示搜索結果,並且不會以用戶了解的語言翻譯網頁。
除多區域設置支持外,Android N 還擴展了用戶可用的語言范圍。它針對常用語言提供超過 25 種的變體,如英語、西班牙語、法語和阿拉伯語。它還針對 100 多種新語言添加了部分支持。
應用可以通過調用 LocaleList.GetDefault() 獲取用戶設置的區域設置列表。為支持擴展的區域設置數量,Android N 正在改變其解析資源的方式。請務必使用新的資源解析邏輯測試和驗證您的應用是否能如期運行。
如需有關新資源解析行為和應遵循的最佳做法的更多信息,請參閱多語言支持。
11.Android 中的 ICU4J API
Android N 目前在 Android 框架(位於 android.icu 軟體包下)中提供 ICU4J API 的子集。遷移很簡單,主要是需要從 com.java.icu 命名空間更改為 android.icu。如果您已在您的應用中使用 ICU4J 捆綁包,切換到 Android 框架中提供的 android.icu API 可以大量節省 APK 大小。
如果要了解有關 Android ICU4J API 的更多信息,請參閱 ICU4J 支持。
12.OpenGL™ ES 3.2 API
Android N 添加了框架介面和對 OpenGL ES 3.2 的平台支持,包括:
- 來自 Android 擴展包 (AEP) 的所有擴展(EXT_texture_sRGB_decode 除外)。
- 針對 HDR 的浮點幀緩沖和延遲著色。
- BaseVertex 繪圖調用可實現更好的批處理和流媒體服務。
- 強大的緩沖區訪問控制可減少 WebGL 開銷。
Android N 上適用於 OpenGL ES 3.2 的框架 API 與 GLES32 類一起提供。使用 OpenGL ES 3.2 時,請務必通過 標記和 android:glEsVersion 屬性在您的清單文件中聲明要求。
如需了解有關使用 OpenGL ES 的信息,包括如何在運行時檢查設備支持的 OpenGL ES 版本,請參閱 OpenGL ES API 指南。
13.Android TV 錄制
Android N 通過新的錄制 API 添加了從 Android TV 輸入服務錄制和播放內容的功能。構建在現有時移 API 之上,TV 輸入服務可以控制能夠錄制的渠道數據、保存錄制的會話的方式,同時可通過錄制的內容管理用戶交互。
如需了解詳細信息,請參閱 Android TV 錄制 API。
14.Android for Work
Android for Work 針對運行 Android N 的設備添加了許多新功能和 API。部分重要內容如下— 有關與 Android N 相關的 Android for Work 更新的完整列表,請參閱 Android for Work 變更。
15.關閉工作
在具有託管配置文件的設備上,用戶可以切換工作模式。工作模式關閉時,管理的用戶臨時關閉,其禁用託管配置文件應用、後台同步和通知。這包括配置文件所有者應用。關閉工作模式時,系統顯示永久狀態圖標,以提醒用戶他們無法啟動工作應用。啟動器指示該工作應用和小組件無法訪問。
16.Always on VPN
設備所有者和配置文件所有者可以確保工作應用始終通過指定的 VPN 連接。系統在設備啟動後自動啟動該 VPN。
新的 DevicePolicyManager 方法為 setAlwaysOnVpnPackage() 和 getAlwaysOnVpnPackage()。
由於 VPN 服務無需應用交互即可由系統直接綁定,因此,VPN 客戶端必須針對 Always on VPN 處理新的入口點。和以前一樣,由與操作匹配的 Intent 過濾器將服務指示給系統。android.net.VpnService。
用戶還可以使用 Settings>More>Vpn 在主要用戶中手動設置實現 VPNService 方法的 Always on VPN 客戶端。
17.輔助工具增強功能
Android N 現在針對新的設備設置直接在歡迎屏幕上提供「Vision Settings」。這使用戶可以更容易發現和配置他們設備上的輔助工具功能,包括放大手勢、字體大小、顯示屏尺寸和 TalkBack。
隨著這些輔助工具功能更為突出,在啟用這些功能後,您的用戶更可能試用您的應用。請務必提前啟用這些設置測試您的應用。您可以通過 Settings > Accessibility 啟用它們。
還是在 Android N 中,輔助工具服務現在可以幫助具有動作障礙的用戶觸摸屏幕。全新的 API 允許使用人臉追蹤、眼球追蹤、點掃描等功能構建服務,以滿足這些用戶的需求。
如需了解詳細信息,請參閱可下載的 API 參考 中的 android.accessibilityservice.GestureDescription
18.直接啟動
直接啟動可以縮短設備啟動時間,讓注冊的應用具有有限的功能,即使在意外重啟後。例如,如果當用戶睡覺時加密的設備重啟,那麼注冊的警報、消息和來電現在可以和往常一樣繼續通知用戶。這也意味著重啟後輔助工具服務會立即可用。
在 Android N 中,直接啟動充分利用基於文件的加密,以針對系統和應用數據啟用細化的加密策略。為系統和應用數據。系統針對選定的系統數據和顯式注冊的應用數據使用設備加密的存儲。默認情況下,憑據加密的存儲可用於所有其他系統數據、用戶數據、應用及應用數據。
啟動時,系統在受限的模式中啟動,僅訪問設備加密的數據,不會對應用或數據進行常規訪問。如果您有想要在此模式下運行的組件,您可以通過在清單文件中設置標記注冊它們。重啟後,系統通過廣播 LOCKED_BOOT_COMPLETED Intent 激活注冊的組件。系統確保注冊的設備加密的應用數據在解鎖前可用。所有其他數據在用戶確認鎖定屏幕憑據進行解密前均不可用。
如需了解詳細信息,請參閱直接啟動。
19.密鑰認證
使用硬體支持的密鑰庫,可更安全地在 Android 設備上創建、存儲和使用加密密鑰。它們可保護密鑰免受 Linux 內核、潛在的 Android 漏洞的攻擊,也可防止從已取得 root 許可權的設備提取密鑰。
為了讓硬體支持的密鑰庫使用起來更簡單和更安全,Android N 引入了密鑰認證。應用和關閉的設備可使用密鑰認證以堅決地確定 RSA 或 EC 密鑰對是否受硬體支持、密鑰對的屬性如何,以及其使用和有效性有何限制。
應用和關閉的設備服務可以通過 X.509 認證證書(必須由有效的認證密鑰簽署)請求有關密鑰對的信息。認證密鑰是一個 ECDSA 簽署密鑰,其在出廠時被注入設備的硬體支持的密鑰庫。因此,有效的認證密鑰簽署的認證證書可確認硬體支持的密鑰庫是否存在,以及該密鑰庫中密鑰對的詳細信息。
為確保設備使用安全的官方 Android 出廠映像,密鑰認證要求設備 bootloader 向可信執行環境 (TEE) 提供以下信息:
設備上安裝的操作系統版本和補丁級別
驗證的啟動公鑰和鎖定狀態。
如需了解有關硬體支持的密鑰庫功能的詳細信息,請參閱硬體支持的密鑰庫指南。
除密鑰認證外,Android N 還推出了指紋綁定密鑰,在指紋注冊時不會撤銷。
20.網路安全性配置
在 Android N 中,通過使用說明性網路安全性配置(而不是使用傳統的易出錯的編程 API(例如,X509TrustManager)),應用可以安全地自定義其安全(HTTPS、TLS)連接的行為,無需任何代碼修改。
支持的功能:
自定義信任錨。讓應用可以針對其安全連接自定義哪些證書頒發機構 (CA) 受信任。例如,信任特定的自簽署證書或受限的公共 CA 集。
僅調試重寫。讓應用開發者可以安全調試其應用的安全連接,而不會增加安裝基礎的風險。
明文流量退出。讓應用可以防止自身意外使用明文流量。
固定證書。這是一項高級功能,讓應用可以針對安全連接限制哪些伺服器密鑰受信任。
如需了解詳細信息,請參閱網路安全性配置。
21.默認受信任的證書頒發機構
默認情況下,針對 Android N 的應用僅信任系統提供的證書,且不再信任用戶添加的證書頒發機構 (CA)。如果針對 Android N 的應用希望信任用戶添加的 CA,則應使用網路安全性配置以指定信任用戶 CA 的方式。
22.APK signature scheme v2
PackageManager 類現在支持使用 APK signature scheme v2 驗證應用。APK signature scheme v2 是一個整個文件簽名架構,通過檢測對 APK 文件進行的任何未經授權更改,可大幅提高驗證速度,同時也可加強完整性保證。
為保持向後兼容,在使用 v2 簽名架構簽署之前,APK 必須先使用 v1 簽名架構(JAR 簽名架構)簽署。對於 v2 簽名架構,如果在使用 v2 架構簽署後使用額外的證書簽署 APK,驗證將失敗。
APK signature scheme v2 支持稍後將在 N Developer Preview中推出。
23.作用域目錄訪問
在 Android N 中,應用可以使用新的 API 請求訪問特定的外部存儲目錄,包括可移動媒體上的目錄,如 SD 卡。新 API 大大簡化了應用訪問標准外部存儲目錄的方式,如 Pictures 目錄。應用(如照片應用)可以使用這些 API(而不是使用 READ_EXTERNAL_STORAGE),其授予所有存儲目錄的訪問許可權或存儲訪問框架,從而讓用戶可以導航到目錄。
此外,新的 API 簡化了用戶向應用授予外部存儲訪問許可權的步驟。當您使用新的 API 時,系統使用一個簡單的許可權 UI,其清楚地詳細介紹應用正在請求訪問的目錄。
『玖』 有用過artTemplate的嗎,貌似不能支持內置函數,如Math.abs
在函數規模很小的情況下,函數調用的時間開銷可能相當於甚至超過執行函數本身的時間,把它定義為內置函數,可大大減少程序運行時間。
如果內置函數中包含復雜控制語句,內置函數就沒有太大意義了,編譯器會直接編譯為普通函數