可能是最早的學習Android N新特性的文章
Google在今天放出了Android N開發者預覽版。Android N支持Nexus6及以上的設備。5太子Nexus5不再得到更新。
Android N相比於Android 6.0增加了哪些新的功能呢,開發者要關心哪些API呢,通過本篇文章,將一一得到答案。
Android N的新特性
分屏多窗口(Multi-Window Support)
還在為看美劇的時候,收到微信消息而在兩個應用間來回切換而煩惱嗎。在Android N上,再也不用煩惱這個了。
我們只需要在AndroidManifest文件中增加了一種叫做android:resizableActivity
的屬性值,並把這個值設為true,我們的應用的Activity將以分屏模式的形式呈現在手機或平板上。
同時Android N在電視等設備上支持畫中畫模式。只需要設置android:supportsPictureInPicture
的值為真即可。
直接回復消息(Direct Reply)
在Android N中,用戶將能直接和通知交互來實現快速回復消息或是更新任務列表的功能。呵呵,不得不說這個功能借鑒了iOS。
消息通知上新增了回復按鈕。
用戶能直接在通知欄回復消息,不再需要進入應用回復了。
歸攏通知(Bundled Notifications)
還在為通知欄被各種亂七八糟的通知,推送煩惱嗎?不用擔心,Android N將為你解決這個問題。之前,Android應用的通知都是獨立的,即使是同一個應用。而在Android N中,相同應用的通知可以歸納到一個組中,用戶可以點擊展開查看每條通知,也可以點擊收起。我們只需要在之前構造消息的方法中添加一句Builder.setGroup()
即可。
節約數據(Data Saver)
在Android N中,用戶可在設置中開啟節約數據選項。
當用戶開啟了節約數據模式並且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原創。著作權由本人保留。
如需轉載,請在顯著位置注明出處。
歡迎交流討論。