Android N 完全不同以往的四個新特性
本文由碼農網 – 溫迪原創翻譯,轉載請看清文末的轉載要求,歡迎參與我們的付費投稿計劃!
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的功能。
譯文連結:http://www.codeceo.com/article/android-n-4-new-features.html
英文原文:4 Reasons Why Android N is a Game Changer for Developers
翻譯作者:碼農網 – 溫迪
[ 轉載必須在正文中標註並保留原文連結、譯文連結和譯者等資訊。]
相關文章
- Android N新特性——Notification快速回復Android
- Android N新特性--多視窗支援Android
- Android新特性介紹,ConstraintLayout完全解析AndroidAI
- Oracle11新特性——PLSQL新特性(四)OracleSQL
- 【MySQL】5.7新特性之四MySql
- Android 9.0新特性Android
- HTTP和SOAP完全就是兩個不同的協議HTTP協議
- Oracle 12c 新特性(四)Oracle
- Java 8新特性(四):新的時間和日期APIJavaAPI
- Android O 新特性 — NotificationAndroid
- Android 4.4 KitKat新特性Android
- Android開發--RecyclerView使用,看AndroidL新特性,android5.0新特性AndroidView
- PHP 7 的幾個新特性PHP
- 【Java 8 新特性】Java Stream 通過skip()方法跳過前N個子元素Java
- Android技術棧(四)Android Jetpack MVVM 完全實踐AndroidJetpackMVVM
- .NET 9 的幾個新特性,新穎嗎?
- Yarn 的 Plug'n'Play 特性Yarn
- 為什麼每個程式都有四個不同的ID?
- 代理伺服器的四個不同用途伺服器
- MySQL 5.6的72個新特性(譯)MySql
- Java8的八個新特性Java
- Ubuntu 13.04 的 10 個最佳新特性Ubuntu
- MySQL9的3個新特性MySql
- Android Studio 新特性詳解Android
- JDK6.0的新特性之四:使用Compiler APIJDKCompileAPI
- Android Q (Android 10.0)系統新特性Android
- 最權威的 Android Oreo 新特性詳解Android
- SpriteKit 在iOS個版本中的新特性iOS
- 適配Android N遇到的兩個問題Android
- c++ 11 執行緒池---完全使用c++ 11新特性C++執行緒
- Oracle 21c新特性預覽與日常管理相關的幾個新特性Oracle
- DX12超強新特性:支援A卡與N卡混合交火
- Android的四個基本佈局Android
- Linux 核心版本號命名四個不同的階段Linux
- 完全看懂 Android 四大元件之 Activity(上)Android元件
- Android7.1新特性shortcut文件之外的東西Android
- MySQL 8.0 18個管理相關的新特性MySql
- Oracle11新特性——分割槽功能增強(四)Oracle