Android N 完全不同以往的四個新特性

2016-05-07    分類:Android開發、程式設計開發、首頁精華1人評論發表於2016-05-07

本文由碼農網 – 溫迪原創翻譯,轉載請看清文末的轉載要求,歡迎參與我們的付費投稿計劃

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

接下來,列出一些我們迫不及待想要上手的新變化。

1. 支援Java 8語言特性

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

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

如果你打算使用 Jack toolchain(一個Google官方的編譯工具,可以自動打包、壓縮、混淆以及multidexes你的程式碼)構建你的專案,那麼你可以像下面這個示例一樣相容Java 8:

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

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

  • 預設靜態介面方法
  • Lambda表示式
  • 可重用的註解

好吧,其實我對可重用的註解不是很感冒,不過它已經包含在這些特性裡面了。如果你要寫更多的功能性程式碼,你應該會需要用到。想像一下,當你不需要過多考慮有關物件建立的所有listener、Adapter等等其他東西的時候,你的程式碼會變得多麼具有可讀性。

你也可以用 Lambda表示式直接指定一個OnClickListener,就像這段程式碼一樣:

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檔案上生效或更新,而不是位元組碼檔案。

而且可以預見,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
翻譯作者:碼農網 – 溫迪
轉載必須在正文中標註並保留原文連結、譯文連結和譯者等資訊。]

相關文章