編輯:關於Android編程
AndroidN beta版本已經出來了, 雖然還沒有搭載的機器上市,但是已經Android N版本早早的就可以體驗試用了。
近期使用Nexus 6 刷了7.0版本, 對負責的項目進行了適配。大問題不多,小問題不少,還是耗費了些時間。整理如下:
在 Android N 中,引入了一個新的而且非常需要的多任務處理功能 — 多窗口支持。
現在,用戶可以一次在屏幕上打開兩個應用。
在運行 Android N 的手機和平板電腦上
,用戶可以並排運行兩個應用,或者處於分屏模式時一個應用位於另一個應用之上。 用戶可以通過拖動兩個應用之間的分隔線來調整應用。
在 Android TV 設備上,應用可以將自身置於畫中畫模式,從而讓它們可以在用戶浏覽或與其他應用交互時繼續顯示內容。
在 Android N 中,重新設計了通知,使其更易於使用並且速度更快。 部分變更包括:
模板更新
消息樣式自定義
捆綁通知
直接回復
自定義視圖
在 Android N 中,添加了 Just in Time (JIT) 編譯器,對 ART 進行代碼分析,讓它可以在應用運行時持續提升 Android 應用的性能。 JIT 編譯器對 Android 運行組件當前的 Ahead of Time (AOT) 編譯器進行了補充,有助於提升運行時性能,節省存儲空間,加快應用更新和系統更新速度。
Android 運行組件的 JIT 編譯器最實際的好處之一是應用安裝和系統更新的速度。 即使在 Android 6.0 中需要幾分鐘進行優化和安裝的大型應用,現在只需幾秒鐘就可以完成安裝。 系統更新也變得更快,因為省去了優化步驟。
現在,在 Android N 中,低電耗模式又前進了一步,隨時隨地可以省電。只要屏幕關閉了一段時間,且設備未插入電源,低電耗模式就會對應用使用熟悉的 CPU 和網絡限制。這意味著用戶即使將設備放入口袋裡也可以省電。
低電耗模式現在應用限制以延長電池壽命,即使設備未處於靜止狀態。
Project Svelte 在持續改善,以最大程度減少生態系統中一系列 Android 設備中系統和應用使用的 RAM。 在 Android N 中,Project Svelte 注重優化在後台中運行應用的方式。
Android N 推出了 Data Saver 模式,這是一項新的系統服務,有助於減少應用使用的蜂窩數據,無論是在漫游,賬單周期即將結束,還是使用少量的預付費數據包。 Data Saver 讓用戶可以控制應用使用蜂窩數據的方式,同時讓開發者打開 Data Saver 時可以提供更多有效的服務。
Android N 將一項新的 3D 渲染 APIVulkan?集成到平台中。就像OpenGL? ES一樣,Vulkan 是 3D 圖形和渲染的一項開放標准,由 Khronos Group 維護。
Android N 添加了一個新的 API,可以定義自己的“快速設置”圖塊,使用戶可以輕松訪問應用中的關鍵控件和操作。
Android N 現在支持在平台中進行號碼屏蔽,提供框架 API,讓服務提供商可以維護屏蔽的號碼列表。 默認短信應用、默認手機應用和提供商應用可以對屏蔽的號碼列表進行讀取和寫入操作。 其他應用則無法訪問此列表。
Android N 允許默認的手機應用過濾來電。手機應用執行此操作的方式是實現新的CallScreeningService,該方法允許手機應用基於來電的Call.Details執行大量操作
Android N 現在允許用戶在設置中選擇多個區域設置,以更好地支持雙語用例。 應用可以使用新的 API 獲取用戶選擇的區域設置,然後為多區域設置用戶提供更成熟的用戶體驗 — 如以多個語言顯示搜索結果,並且不會以用戶了解的語言翻譯網頁。
Android N 引入更多表情符號和表情符號相關功能,包括膚色表情符號和支持變量選擇符
Android N 目前在 Android 框架(位於android.icu軟件包下)中提供ICU4JAPI的子集。 遷移很簡單,主要是需要從com.java.icu命名空間更改為android.icu。如果您已在您的應用中使用 ICU4J 捆綁包,切換到 Android 框架中提供的android.icuAPI 可以大量節省 APK 大小
Android N 添加了框架接口和對 OpenGL ES 3.2 的平台支持
Android N 通過新的錄制 API 添加了從 Android TV 輸入服務錄制和播放內容的功能。 構建在現有時移 API 之上,TV 輸入服務可以控制能夠錄制的渠道數據、保存錄制的會話的方式,同時可通過錄制的內容管理用戶交互。
Android for Work 針對運行 Android N 的設備添加了許多新功能和 API。部分重要內容如下— 有關變更的完整列表,請參閱Android forWork 更新。
Android N 現在針對新的設備設置直接在歡迎屏幕上提供“Vision Settings”。 這使用戶可以更容易發現和配置他們設備上的無障礙功能,包括放大手勢、字體大小、顯示屏尺寸和 TalkBack。
在 Android N 中,直接啟動充分利用基於文件的加密,以針對系統和應用數據啟用細化的加密策略。為系統和應用數據。系統針對選定的系統數據和顯式注冊的應用數據使用設備加密的存儲。 默認情況下,憑據加密的存儲可用於所有其他系統數據、用戶數據、應用及應用數據。
為了讓硬件支持的密鑰庫使用起來更簡單和更安全,Android N 引入了密鑰認證。 應用和關閉的設備可使用密鑰認證以堅決地確定 RSA 或 EC 密鑰對是否受硬件支持、密鑰對的屬性如何,以及其使用和有效性有何限制。
在 Android N 中,通過使用說明性“網絡安全性配置”(而不是使用傳統的易出錯的編程 API(例如,X509TrustManager)),應用可以安全地自定義其安全(HTTPS、TLS)連接的行為,無需任何代碼修改。
在 Android N 中,應用可以使用新的 API 請求訪問特定的外部存儲目錄,包括可移動媒體上的目錄,如 SD 卡。新 API 大大簡化了應用訪問標准外部存儲目錄的方式,如Pictures目錄。 應用(如照片應用)可以使用這些 API(而不是使用READ_EXTERNAL_STORAGE),其授予所有存儲目錄的訪問權限或存儲訪問框架,從而讓用戶可以導航到目錄。
在 Android N 中,用戶可以按“Alt + /”觸發“鍵盤快捷鍵”屏幕,它會顯示的系統和對焦的應用中可用的所有快捷鍵
FrameMetricsListenerAPI 允許應用監測它的 UI 渲染性能。 API 通過公開流式傳輸 Pub/Sub API 來提供此能力,以傳遞應用當前窗口的幀計時信息。 返回的數據相當於adb shelldumpsysgfxinfo framestats顯示的數據,但不限定於在過去的 120 幀內。
Android N 在存儲訪問框架中增加了“虛擬文件”的概念。虛擬文件功能可以讓您的DocumentsProvider返回可與ACTION_VIEWIntent使用的文件 URI,即使它們沒有直接字節碼表示。 Android N 還允許您為用戶文件(虛擬或其他類)提供備用格式。
支持StatusbarTranslucent時顯示URL bar位置需要在狀態欄之下 (setcontent view時統一處理,但狀態欄位置是動態添加所以需要特殊處理)
多窗口時:
1,在窗口下的位置時,控制顯示的urlbar位置需要特殊處理;在窗口上位置時時,無需處理。所以面臨多窗口狀態下需要區分多窗口的問題。
2,全屏模式下可解決1的問題, 但是全屏模式下在多窗口裡無法隱藏狀態欄,所以在窗口上位置時,存在和狀態欄重疊的問題。
3,多窗口變化時動態改變狀態欄顯示(理論上可行,但是增加額外的處理成本和頁面重繪)
最終處理:
對24及以上版本,去除對StatusbarTranslucent支持。
使用了24版本的API,則編譯版本需指向Target 24
指向24後,很容易出現JDK版本沖突問題:
1,(Can't process class[dalvik/system/DexClassLoader.class] (Unsupported class version number [52.0](maximum 51.0, Java 1.7)))
2,如果找不對JDK 沖突的包單方面指向1.8還會有:
UNEXPECTEDTOP-LEVEL EXCEPTION:
com.android.dx.cf.iface.ParseException:bad class file magic (cafebabe) or version (0034.0000)
3, javac:無效的源發行版:1.8
最終處理:
使用android-24裡的android.jar那麼就得支持java 8版本, 需要檢查編譯的Jar包,proguard (proguard5.2.1支持) 是否均支持java 8版本。
多窗口UI顯示問題
1,顯示不全的頁面,添加滾動支持。
2,通過屏幕寬高計算顯示位置和數量的,區分狀態顯示處理。
3,輸入法遮擋的,暫不處理。
4,實在難兼容的,獨立Task,不支持多窗口。
https://developer.android.com/preview/api-overview.html官方說明(Android N for Developers)
https://developer.android.com/preview/samples.html官方demo
有時候利用android的TextView顯示中文跟數字的組合會對不齊,如下面截圖,文字還沒有到達屏幕右邊就開始換行了為了解決這個文字,自己子定義了一個TextView的
先看 SwipeLayout的效果圖圖太多了,我這只上傳一張,想看 listview和GridView效果的,和想看源碼的 —> GitHub怎麼實現後
觀察者模式有時被稱作發布/訂閱模式,觀察者模式定義了一種一對多的依賴關系,讓多個觀察者對象同時監聽某一個主題對象。這個主題對象在狀態發生變化時,會通知所有觀察者對象,使它
在做Android 開發過程中,會遇到一些小的問題,雖然自己動手也能解決,但是有了一些小工具,解決這些問題就得心應手了,今天就為大家推薦一下Android 開發遇到的小工