Android 在 Google 開發者大會上發佈了哪些更新? | Google 開發者大會 2018

有哪些新的 Android 系統特性

  • Google Play 上的 targetVersion 要求
    • 2018年8月 新應用發佈必須爲26或者更高
    • 2018年11月 升級現有應用必須爲26或者更高
    • 2019年以後 新發布或者升級應用必須爲一年內發佈的 Android 版本
  • 工信部已經出臺相應的政策,中國主流的應用市場也已經跟進
  • Google 提供了全新的 TargetVersion 升級指南,能夠掃描圖片中的二維碼得到。

電量優化和後臺控制

Android 始終致力於電量優化和後臺控制,經過後臺控制程序進程,優化電量,進而提高待機時間,來提高用戶體驗。咱們但願開發者經過下圖中的要求,來測試本身的應用,進而提高本身的應用質量。android

從Android O 開始,應用能夠像之前同樣,在前臺啓動服務,可是當被轉到後臺的時候,應用只有幾分鐘的時間繼續進行服務,而後,他的後臺服務就會被中止。當應用在後臺時,是不能使用 startService 來啓動服務的,會拋出 illegalStateException 錯誤。數據庫

因此,對於開發者來講,若是你的應用須要和開發者在後臺保持交互的話,你須要按照下面的方案進行優化編程

  • Context.startForegroundService()
  • 使用JobScheduler WorkManager 調度後臺任務
  • 使用 JobIntentService 替換 IntentService

後臺位置限制

不少開發者反應,電池耗電是應用開發過程當中最不爽的因素,然後臺定位就是電池耗電的最大緣由之一。若是大量使用定位,電池就會消耗很快,用戶就會禁用定位,而後你的應用體驗就會變得不好。進而會致使你的應用的一些功能失效。因此,咱們在 Android O 的時候,對定位加了必定的限制。安全

當你的應用在前臺的時候,仍是能夠像往常同樣,你實時無限制的收集用戶信息,可是,當你的應用在後收集的時候,收集速度會被限速,大概每小時會有幾回的位置更新。架構

對開發者來講,有如下方案能夠用於優化後臺位置信息的限制編程語言

  • 使用地理圍欄 Geofence。咱們對地理圍欄作了不少效率上的優化,他的延時會稍稍增長,可是功耗卻只有原來的10%。
  • 使用位置批處理 LocationService.setMaxWaitTime()。這就意味着,不少數據點都會在後臺收集,而後一塊兒返回給你。雖然你每小時只會收到幾回位置信息,可是會包含更多的數據點。
  • 被動獲取位置信息 LocationService.setFastestInterval() 當你的應用在後臺時,前臺應用在收集位置信息,你的應用能夠被動接受前臺應用採集的數據信息。

隱式廣播限制

這也是以前 Android 系統中存在的一個問題,隱式廣播可能會致使系統的大量服務被啓動,進而會致使系統不穩定。因此,Android O 中將不在 androidmanifest 中爲隱式廣播註冊廣播接收器。具體限制能夠參考下面的幾條:模塊化

  • 沒法在 androidmanifest 中衛隱式廣播註冊廣播接收器
  • androidmanifest 中註冊的顯式廣播仍然有效
  • 使用Context.registerReceiver()註冊隱式廣播接收器仍然有效

針對上面的限制,咱們建議廣大開發者使用一下方法進行優化:工具

  • 使用優先級更高的 FCM 消息
  • 使用JobScheduler WorkManager 來安排一個做業

Android 的新版本將會支持更多的現代化設備,應用也應該利用這些新的特性來提高用戶體驗,這些新的體驗咱們在下面會一一介紹。開發工具

特長屏幕支持

從 Android O 開始,系統開始支持特長屏幕,不少手機廠家開始發佈特長屏幕的手機。對於廣大開發者來說,請不要對屏幕的縱橫比作出錯誤的假設。不然會影響用戶的 UI 體驗。測試

從 API 26 以上,系統就不會爲應用設置默認的屏幕縱橫比,因此你的應用應該適應不一樣的屏幕尺寸,來作一些屏幕自適應的設計。

若是真的須要最大的屏幕縱橫比聲明支持的話,縱橫比應該這設置

  • android:resizableActivity = false
  • API 26 以上設置 android: MaxAspectRatio 聲明你所支持的最大縱橫比。

凹口屏幕支持

Android O 也對凹口屏幕進了相關的支持,應用能夠在 androidmanifest 中經過一下方式實現對劉海屏幕的支持

  • android:layoutInDisplayCutoutMode
    • DEFAULT 有黑色邊框(屏幕縱向-僅在狀態欄隱藏時)
    • NEVER 一直有黑色邊框
    • SHORT_EDGES 佔用凹邊周圍
  • WindowInsets.getDisplayCutout()
    • getSafeInset(Top|Bottom|Right|Left) 獲取內容的安全區域
    • getBounds()獲取凹口區域(支持多個凹口)
  • 對於開發者來講不要假設狀態欄高度,應該經過模擬器多測試,模擬多種凹口屏的設備。

畫中畫模式(PIP)

從 Android O 開始,系統開始支持畫中畫模式。畫中畫模式是一種特殊的多窗口模式,能夠用來視頻聊天,播放電影,導航等場景。

當一個Activity 處於 PIP 模式,他會處於暫停狀態,可是仍然會顯示內容。出於這個緣由,你應該保證你的應用不會在 onPause()中會暫停播放,正確的作法是,應用在 onStop() 的過程當中暫停播放視頻,在 onStart() 的時候繼續播放。

多顯示器支持

從 Android O 開始,系統支持多顯示支持,若是 Activity 支持多顯示器顯示,系統會自動啓用多顯示器支持。當應用啓動一個 Activity 的時候,能夠經過 ActivityOptions.setLaunchDisplayId() 來制定在哪一個顯示器上進行顯示。每一個顯示器都有本身的配置,當應用從一個顯示器到另外一個顯示器的時候,Activity 會根據顯示器的配置自動修改某些屬性。須要注意的是:雖然 Activity 運行在多個顯示器上,可是仍然只有一個 Activity,不要假設暫停的 Activity 必定是不可見的。

最後,咱們但願開發者可以利用最新的開發工具,來提高應用開發效率和可靠性。 爲了幫助開發者更有效,更容易的開發應用。咱們在今年的 Google I/O 上推出了 Android JetPack 。其中包含了應用開發庫、工具、以及最佳實用指南。經過提供通用的基礎配件和組件,幫助開發者更好的專一於應用開發的業務邏輯。

因爲時間緣由,咱們沒法詳細的介紹每一個模塊的具體使用方法,請你們參考文檔和實例代碼,在應用中使用最新的 Android JetPack 組件

包名重構

全部的擴展類,例如 v4 和 v7 在 JetPack 中使用統一的包名 androidx。同時 gradle 也提供了相應的轉換支持。

咱們下面來介紹一下 JetPack 的架構組件

架構組件提供了數據存儲、管理生命週期等模塊化的功能幫助開發者避免在開發過程當中的常見錯誤,減小樣板文件。 在架構組件中,Room 是支出流暢數據庫訪問的對象映射抽象層,其餘的組件的的說明能夠在下面的圖片中看到

有些組件能夠放在一塊兒使用,好比:LiveData 和 Room,當 Room 中的數據有更新的時候,他就會更新 LiveData 中的數據,從而自動觸發界面中的更新。

Kotlin

咱們如今也很是鼓勵開發者使用 Kotlin 編程語言,相較於 Java,Kotlin 能夠減小25%的代碼量,而且能夠有效防止 NullPointerException,Kotlin 和 Java 的二進制代碼徹底兼容,能夠互相調用,因此你們能夠逐步的遷移到 Kotlin 的開發語言。

咱們在 Android 9 SDK 中,對 Kotlin 添加了可控性註解,若是你的項目中違法了可控性註解的協議,你的代碼在 IDE 中會出現警告,雖然只是警告級別,可是咱們想再下個版本的 IDE 中提升錯誤等級。

從去年 Google I/O 中發佈 Kotlin 成爲 Android 開發的官方語言,咱們作了相關的問卷調查,在調查中咱們發現,40%的開發者已經在使用 Kotlin 進行開發

JetPack 中,咱們也提供了 Kotlin 的擴展庫 KTX,使 Kotlin 的代碼更加簡單整潔,更符合 Android 開發習慣。KTX 能夠幫助你更簡單的編寫業務的核心代碼。

經過使用 Kotlin,開發者們也嚐到了甜頭,咱們在國內的合做夥伴 Camera360,使用 Kotlin 得到了全球業務上的增加,大家能夠經過圖片中的二維碼,瞭解關於 Camera360 的開發者故事

Android Studio 3.1中也更新了許多新工具,幫助開發者更好的開發和測試 Android 應用。例如:支持 Kotlin Lint

Android Studio 3.1 中 還有不少新工具,可是因爲時間關係咱們沒法一一作介紹,總而言之,Android Studio 3.1 提供了更好的編譯速度、更快的模擬器、更全面的分析器、更好的 Kotlin 支持和更好的架構組件的支持。歡迎開發者們在之後的開發過程當中使用。

閱讀更多 Google 開發者大會 2018 技術乾貨

相關文章
相關標籤/搜索