Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android資訊 >> Android N 完全不同以往的四個新特性

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

編輯:Android資訊

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

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也有望全面增加支持其他一些已經得到廣泛應用的注解運行器,比如:Dagger、Dagger2、ButterKnife,這些項目本身也正變的越來越受歡迎 。

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的功能。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved