多是最先的學習Android N新特性的文章

多是最先的學習Android N新特性的文章

Google在今天放出了Android N開發者預覽版。Android N支持Nexus6及以上的設備。5太子Nexus5再也不獲得更新。html

Android N相比於Android 6.0增長了哪些新的功能呢,開發者要關心哪些API呢,經過本篇文章,將一一獲得答案。java

Android N的新特性

分屏多窗口(Multi-Window Support)

還在爲看美劇的時候,收到微信消息而在兩個應用間來回切換而煩惱嗎。在Android N上,不再用煩惱這個了。android

咱們只須要在AndroidManifest文件中增長了一種叫作android:resizableActivity的屬性值,並把這個值設爲true,咱們的應用的Activity將以分屏模式的形式呈如今手機或平板上。express

同時Android N在電視等設備上支持畫中畫模式。只須要設置android:supportsPictureInPicture的值爲真便可。api

直接回復消息(Direct Reply)

在Android N中,用戶將能直接和通知交互來實現快速回復消息或是更新任務列表的功能。呵呵,不得不說這個功能借鑑了iOS。安全

消息通知上新增了回覆按鈕。微信

用戶能直接在通知欄回覆消息,再也不須要進入應用回覆了。網絡

歸攏通知(Bundled Notifications)

還在爲通知欄被各類亂七八糟的通知,推送煩惱嗎?不用擔憂,Android N將爲你解決這個問題。以前,Android應用的通知都是獨立的,即便是同一個應用。而在Android N中,相同應用的通知能夠概括到一個組中,用戶能夠點擊展開查看每條通知,也能夠點擊收起。咱們只須要在以前構造消息的方法中添加一句Builder.setGroup()便可。oracle

節約數據(Data Saver)

在Android N中,用戶可在設置中開啓節約數據選項。app

當用戶開啓了節約數據模式而且Android設備正在使用數據流量,Android系統將禁用後臺對數據的使用並示意應用盡量的減小在前臺的數據流量的使用。固然,用戶能夠設置即便開啓也能使用後臺數據的白名單。

經過ConnectivityManager的getRestrictBackgroundStatus()方法判斷用戶設置的數據使用限制。

該方法返回三種值:

  • RESTRICT_BACKGROUND_STATUS_DISABLED 沒有啓用
  • RESTRICT_BACKGROUND_STATUS_ENABLED 啓用
  • RESTRICT_BACKGROUND_STATUS_WHITELISTED 啓用了可是在白名單中

可經過建立廣播監聽ConnectivityManager.ACTION_RESTRICT_BACKGROUND_CHANGED ("android.net.conn.RESTRICT_BACKGROUND_CHANGED")來實現對用戶改變節約數據選項的監測。

開發者相關的特性

Android N除了帶來了用戶相關的新特性,同時也給咱們開發者帶來了許多新的API。

網絡安全配置(Network Security Configuration)

在Android N中,咱們不須要修改應用的代碼,只需使用一個安全配置聲明文件就能夠配置應用的網絡安全設置。

在AndroidManifest文件中聲明以下語句,而後將網絡安全配置寫在xml文件中。

<?xml version="1.0" encoding="utf-8"?>
...
<app ...>
    <meta-data android:name="android.security.net.config"
               android:resource="@xml/network_security_config" />
    ...
</app>

這個特性的幾個關鍵點以下:

  • 自定義受信任的錨
  • 只在調試中使用
  • 阻止明文傳輸
  • 證書識別

具體API細節可查看Google官方文檔Network Security Configuration

ICU4J Android框架API支持(ICU4J Android Framework APIs)

你們可能對ICU4J不太熟悉,我先介紹下。

ICU4J是開源的,被普遍使用的Java庫。主要用於軟件應用的編碼和全球化的支持。

Android N官方支持這個Java庫,放置在android.icu這個包裏。

具體細節請查看官方文檔ICU4J Android Framework APIs

支持Java8(Java 8 Language Features)


Android N開始支持Java8,不容易啊,Android對Java新版本的支持的緩慢一直爲人詬病。Java8那麼多好用的特性終於能用上了。

Android N開發者預覽版目前並不支持Java8全部的語言特性。

支持如下特性:

具體細節請查看官方文檔Supported Java 8 Language Features and APIs

配置Gradle文件:

android {
  ...
  defaultConfig {
    ...
    //使用Jack編譯工具
    jackOptions {
      enabled true
    }
  }
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
}

Jack編譯工具

新推出的Jack(Java Android Compiler Kit)編譯工具,將Java源代碼編譯爲Android的dex字節碼,並有本身單獨的後綴.jack,同時也提供了大多數編譯工具須要單獨提供的功能:重打包,壓縮,混淆以及分包。

老編譯工具和新編譯工具編譯Java代碼到dex文件的對比:

  • 老Javac編譯工具

javac(.java-->.class)-->dx(.class-->.dex)

  • 新Jack編譯工具

Jack(.java-->.jack-->.dex)

具體編譯細節和使用方法請查看官方文檔Jack (Java Android Compiler Kit)


本文是由JohnTsai原創。著做權由本人保留。

如需轉載,請在顯著位置註明出處。

歡迎交流討論。

聯繫郵箱JohnTsai.work@gmail.com

相關文章
相關標籤/搜索