【轉載】Android N 徹底不一樣以往的四個新特性

Google最近發佈了Android的下一個版本,Android N的開發者預覽版。這次預覽版,可讓咱們開發者在正式發佈以前就測試代碼,包括一些新的API,甚至於也能夠提早反饋那些對於咱們來講有些困擾的變化。此次的發佈版本只醞釀了幾個月,可是其中一些使人驚奇的功能已經看起來很棒了。相信你也同樣對此感到很是興奮!css

接下來,列出一些咱們火燒眉毛想要上手的新變化。html

1. 支持Java 8語言特性

一般來說,Java在最性感的語言當中根本就排不上號。更不用說,那些還僅僅支持Java 7部分特性的平臺了,要知道它已經發布5年了。咱們急需一個更加現代化的Java,每一個人都應該已經意識到了。java

當Google宣佈Android將基於OpenJDK的時候,咱們就已經知道這樣的變化就要來了。這意味着,咱們將要比原先指望的更早體驗到Java 8的新特性。android

若是你打算使用 Jack toolchain(一個Google官方的編譯工具,能夠自動打包、壓縮、混淆以及multidexes你的代碼)構建你的項目,那麼你能夠像下面這個示例同樣兼容Java 8:nginx

android {
  defaultConfig { jackOptions { enabled true } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } }

這樣就可使 Jack (下同)識別出部分Java 8的語言特性。不用擔憂,你感興趣的部分都在裏面,好比:git

  • 默認靜態接口方法
  • Lambda表達式
  • 可重用的註解

好吧,其實我對可重用的註解不是很感冒,不過它已經包含在這些特性裏面了。若是你要寫更多的功能性代碼,你應該會須要用到。想像一下,當你不須要過多考慮有關對象建立的全部listener、Adapter等等其餘東西的時候,你的代碼會變得多麼具備可讀性。github

你也能夠用 Lambda表達式直接指定一個OnClickListener,就像這段代碼同樣:bash

button.onClick( v -> Snackbar.make(v, "Hello sweet lambdas", Snackbar.LENGTH_LONG).show() );

若是你對Lambda表達式不是很熟悉,那麼能夠參考一下 this helpful cheat sheet about Java 8 features and best practices.網絡

並且,Lambda表達式還會以各類方式最低支持到Android 2.3版本。這都要得益於Jack 編譯器在兩年前就已經開始爲此考慮。 把 Jack做爲默認編譯器,也會爲咱們構建的時間帶來諸多裨益。 Jack會跳過常規的Java字節碼編譯,並直接生成dex文件。固然,一些外部引用的library,都會在dex文件上生效或更新,而不是字節碼文件。ide

並且能夠預見,Jack也有望全面增長支持其餘一些已經獲得普遍應用的註解運行器,好比:DaggerDagger2ButterKnife,這些項目自己也正變的愈來愈受歡迎 。

2. 支持應用內多窗口

去年九月,iOS 9已經支持了多窗口。對於Android來講,這也只是個時間問題。若是你有一個大點屏幕的設備,你可能會一邊看YouTube,一邊在Facebook上聊天!這樣的狀況真的會出現!

可是,這對開發者來講,意味着什麼呢?Activity的生命週期會變得很是複雜,開發者又要花費時間去熟悉。若是咱們再把Fragment的生命週期加上去,那麼光是爲了解決這些View生命週期的工做量都會大大增長。

即便是如今,也有不少人在走捷徑,鎖定屏幕方向,避免去處理這些活動的生命週期狀態。這樣一來,在兩個方向上縮放UI都會更加輕鬆。

看看到底會有多少開發者會從新考慮如何鎖定屏幕方向以使他們的App能夠支持多窗口,這應該會是一件有趣的事。Activity and Fragment,我很是高興最終能夠看到他們的生命週期圖表變得更加完善。

3.電量管理的改進:Doze

Doze就是用來管理Android設備電量的。當你的手機尚未同時進行較多任務的時候,它就能夠起做用,限制應用程序對各類資源的訪問,以節省電量。

其實在Android M上已經有Doze了,可是它只能在設備沒有使用的狀況下才起做用,好比就放在桌子上不動的時候。
如今,在Android N上,當設備正在移動且屏幕是關閉的時候,Doze也會起做用。

對於用戶而言,這意味着一個額外的好處——更長的電池壽命。對於開發者來講,在這也會更多的影響用戶的前提下,就要當心你的應用會受到Doze的限制。最明顯的就是,對於CPU和網絡的限制,可能會讓你感到懊惱。不只如此,Doze一樣也會影響wakelock,鬧鐘,同步功能,還有GPS。

雖然這樣可能會使你的代碼稍微複雜一些,但這也是一個巨大的用戶體驗的提高。更長的電池壽命意味着咱們能夠有更多的精力去作更有用,更有影響力的事情。好比:糖果消消樂!

4.通知

最後要說明的並不是最不重要。通知通過了改版,如今全部來自同一應用的通知,均可以分組歸類在一塊兒。並且這裏也提供給用戶能夠直接輸入回覆應用的選項。

看起來通知確實是獲得了很是不錯的改進,特別是對於消息類的應用!用戶在應用之間的上下文切換會變少,這對於Android的生態系統也是一大裨益。

若是你想要了解關於這些新變化的更多細節,或者想要親自上手Android N預覽版。那麼 這份資料 能夠指導你怎樣去作。順便提一句,Android Studio 2.1 preview(譯者注:原文連接已失效,正式版已出,此處換上官網連接) 也已經發布,而且支持Android N。好吧,咱們在一開始就獲得了所有工具的支持。

你最感興趣的Android N特性是什麼?我還漏掉什麼了嗎?在下面的評論裏分享你的想法,並在預覽文檔裏查證。偉大的時代即未來臨!

譯者注:谷歌官方推出的multidex兼容包,配合AndroidStudio實現了一個APK包含多個dex的功能。

 

譯文連接:http://www.codeceo.com/article/android-n-4-new-features.html
英文原文:4 Reasons Why Android N is a Game Changer for Developers
翻譯做者:碼農網 – 溫迪
轉載必須在正文中標註並保留原文連接、譯文連接和譯者等信息。]

相關文章
相關標籤/搜索