日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android 在 Google 开发者大会上发布了哪些更新? | Google 开发者大会 2018

發(fā)布時間:2023/12/19 Android 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android 在 Google 开发者大会上发布了哪些更新? | Google 开发者大会 2018 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

有哪些新的 Android 系統(tǒng)特性

  • Google Play 上的 targetVersion 要求
    • 2018年8月 新應(yīng)用發(fā)布必須為26或者更高
    • 2018年11月 升級現(xiàn)有應(yīng)用必須為26或者更高
    • 2019年之后 新發(fā)布或者升級應(yīng)用必須為一年內(nèi)發(fā)布的 Android 版本
  • 工信部已經(jīng)出臺相應(yīng)的政策,中國主流的應(yīng)用市場也已經(jīng)跟進(jìn)
  • Google 提供了全新的 TargetVersion 升級指南,可以掃描圖片中的二維碼獲得。

電量優(yōu)化和后臺控制

Android 始終致力于電量優(yōu)化和后臺控制,通過后臺控制程序進(jìn)程,優(yōu)化電量,進(jìn)而提升待機(jī)時間,來提升用戶體驗。我們希望開發(fā)者通過下圖中的要求,來測試自己的應(yīng)用,進(jìn)而提升自己的應(yīng)用質(zhì)量。

從Android O 開始,應(yīng)用可以像以前一樣,在前臺啟動服務(wù),但是當(dāng)被轉(zhuǎn)到后臺的時候,應(yīng)用只有幾分鐘的時間繼續(xù)進(jìn)行服務(wù),然后,他的后臺服務(wù)就會被停止。當(dāng)應(yīng)用在后臺時,是不能使用 startService 來啟動服務(wù)的,會拋出 illegalStateException 錯誤。

所以,對于開發(fā)者來說,如果你的應(yīng)用需要和開發(fā)者在后臺保持交互的話,你需要按照下面的方案進(jìn)行優(yōu)化

  • Context.startForegroundService()
  • 使用JobScheduler WorkManager 調(diào)度后臺任務(wù)
  • 使用 JobIntentService 替換 IntentService

后臺位置限制

很多開發(fā)者反應(yīng),電池耗電是應(yīng)用開發(fā)過程中最不爽的因素,而后臺定位就是電池耗電的最大原因之一。如果大量使用定位,電池就會消耗很快,用戶就會禁用定位,然后你的應(yīng)用體驗就會變得很差。進(jìn)而會導(dǎo)致你的應(yīng)用的一些功能失效。所以,我們在 Android O 的時候,對定位加了一定的限制。

當(dāng)你的應(yīng)用在前臺的時候,還是可以像往常一樣,你實時無限制的收集用戶信息,但是,當(dāng)你的應(yīng)用在后收集的時候,收集速度會被限速,大概每小時會有幾次的位置更新。

對開發(fā)者來說,有以下方案可以用于優(yōu)化后臺位置信息的限制

  • 使用地理圍欄 Geofence。我們對地理圍欄做了很多效率上的優(yōu)化,他的延時會稍稍增加,但是功耗卻只有原來的10%。
  • 使用位置批處理 LocationService.setMaxWaitTime()。這就意味著,很多數(shù)據(jù)點(diǎn)都會在后臺收集,然后一起返回給你。雖然你每小時只會收到幾次位置信息,但是會包含更多的數(shù)據(jù)點(diǎn)。
  • 被動獲取位置信息 LocationService.setFastestInterval() 當(dāng)你的應(yīng)用在后臺時,前臺應(yīng)用在收集位置信息,你的應(yīng)用可以被動接受前臺應(yīng)用采集的數(shù)據(jù)信息。

隱式廣播限制

這也是之前 Android 系統(tǒng)中存在的一個問題,隱式廣播可能會導(dǎo)致系統(tǒng)的大量服務(wù)被啟動,進(jìn)而會導(dǎo)致系統(tǒng)不穩(wěn)定。所以,Android O 中將不在 androidmanifest 中為隱式廣播注冊廣播接收器。具體限制可以參考下面的幾條:

  • 無法在 androidmanifest 中衛(wèi)隱式廣播注冊廣播接收器
  • androidmanifest 中注冊的顯式廣播仍然有效
  • 使用Context.registerReceiver()注冊隱式廣播接收器仍然有效

針對上面的限制,我們建議廣大開發(fā)者使用一下方法進(jìn)行優(yōu)化:

  • 使用優(yōu)先級更高的 FCM 消息
  • 使用JobScheduler WorkManager 來安排一個作業(yè)

Android 的新版本將會支持更多的現(xiàn)代化設(shè)備,應(yīng)用也應(yīng)該利用這些新的特性來提升用戶體驗,這些新的體驗我們在下面會一一介紹。

特長屏幕支持

從 Android O 開始,系統(tǒng)開始支持特長屏幕,很多手機(jī)廠家開始發(fā)布特長屏幕的手機(jī)。對于廣大開發(fā)者來講,請不要對屏幕的縱橫比做出錯誤的假設(shè)。否則會影響用戶的 UI 體驗。

從 API 26 以上,系統(tǒng)就不會為應(yīng)用設(shè)置默認(rèn)的屏幕縱橫比,所以你的應(yīng)用應(yīng)該適應(yīng)不同的屏幕尺寸,來做一些屏幕自適應(yīng)的設(shè)計。

如果真的需要最大的屏幕縱橫比聲明支持的話,縱橫比應(yīng)該這設(shè)置

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

凹口屏幕支持

Android O 也對凹口屏幕進(jìn)了相關(guān)的支持,應(yīng)用可以在 androidmanifest 中通過一下方式實現(xiàn)對劉海屏幕的支持

  • android:layoutInDisplayCutoutMode
    • DEFAULT 有黑色邊框(屏幕縱向-僅在狀態(tài)欄隱藏時)
    • NEVER 一直有黑色邊框
    • SHORT_EDGES 占用凹邊周圍
  • WindowInsets.getDisplayCutout()
    • getSafeInset(Top|Bottom|Right|Left) 獲取內(nèi)容的安全區(qū)域
    • getBounds()獲取凹口區(qū)域(支持多個凹口)
  • 對于開發(fā)者來說不要假設(shè)狀態(tài)欄高度,應(yīng)該通過模擬器多測試,模擬多種凹口屏的設(shè)備。

畫中畫模式(PIP)

從 Android O 開始,系統(tǒng)開始支持畫中畫模式。畫中畫模式是一種特殊的多窗口模式,可以用來視頻聊天,播放電影,導(dǎo)航等場景。

當(dāng)一個Activity 處于 PIP 模式,他會處于暫停狀態(tài),但是仍然會顯示內(nèi)容。出于這個原因,你應(yīng)該保證你的應(yīng)用不會在 onPause()中會暫停播放,正確的做法是,應(yīng)用在 onStop() 的過程中暫停播放視頻,在 onStart() 的時候繼續(xù)播放。

多顯示器支持

從 Android O 開始,系統(tǒng)支持多顯示支持,如果 Activity 支持多顯示器顯示,系統(tǒng)會自動啟用多顯示器支持。當(dāng)應(yīng)用啟動一個 Activity 的時候,可以通過 ActivityOptions.setLaunchDisplayId() 來制定在哪個顯示器上進(jìn)行顯示。每個顯示器都有自己的配置,當(dāng)應(yīng)用從一個顯示器到另一個顯示器的時候,Activity 會根據(jù)顯示器的配置自動修改某些屬性。需要注意的是:雖然 Activity 運(yùn)行在多個顯示器上,但是仍然只有一個 Activity,不要假設(shè)暫停的 Activity 一定是不可見的。

最后,我們希望開發(fā)者能夠利用最新的開發(fā)工具,來提升應(yīng)用開發(fā)效率和可靠性。 為了幫助開發(fā)者更有效,更容易的開發(fā)應(yīng)用。我們在今年的 Google I/O 上推出了 Android JetPack 。其中包含了應(yīng)用開發(fā)庫、工具、以及最佳實用指南。通過提供通用的基礎(chǔ)配件和組件,幫助開發(fā)者更好的專注于應(yīng)用開發(fā)的業(yè)務(wù)邏輯。

由于時間原因,我們無法詳細(xì)的介紹每個模塊的具體使用方法,請大家參考文檔和實例代碼,在應(yīng)用中使用最新的 Android JetPack 組件

包名重構(gòu)

所有的擴(kuò)展類,例如 v4 和 v7 在 JetPack 中使用統(tǒng)一的包名 androidx。同時 gradle 也提供了相應(yīng)的轉(zhuǎn)換支持。

我們下面來介紹一下 JetPack 的架構(gòu)組件

架構(gòu)組件提供了數(shù)據(jù)存儲、管理生命周期等模塊化的功能幫助開發(fā)者避免在開發(fā)過程中的常見錯誤,減少樣板文件。 在架構(gòu)組件中,Room 是支出流暢數(shù)據(jù)庫訪問的對象映射抽象層,其他的組件的的說明可以在下面的圖片中看到

有些組件可以放在一起使用,比如:LiveData 和 Room,當(dāng) Room 中的數(shù)據(jù)有更新的時候,他就會更新 LiveData 中的數(shù)據(jù),從而自動觸發(fā)界面中的更新。

Kotlin

我們現(xiàn)在也非常鼓勵開發(fā)者使用 Kotlin 編程語言,相較于 Java,Kotlin 可以減少25%的代碼量,并且可以有效防止 NullPointerException,Kotlin 和 Java 的二進(jìn)制代碼完全兼容,可以互相調(diào)用,所以大家可以逐步的遷移到 Kotlin 的開發(fā)語言。

我們在 Android 9 SDK 中,對 Kotlin 添加了可控性注解,如果你的項目中違法了可控性注解的協(xié)議,你的代碼在 IDE 中會出現(xiàn)警告,雖然只是警告級別,但是我們想再下個版本的 IDE 中提高錯誤等級。

從去年 Google I/O 中發(fā)布 Kotlin 成為 Android 開發(fā)的官方語言,我們做了相關(guān)的問卷調(diào)查,在調(diào)查中我們發(fā)現(xiàn),40%的開發(fā)者已經(jīng)在使用 Kotlin 進(jìn)行開發(fā)

JetPack 中,我們也提供了 Kotlin 的擴(kuò)展庫 KTX,使 Kotlin 的代碼更加簡單整潔,更符合 Android 開發(fā)習(xí)慣。KTX 可以幫助你更簡單的編寫業(yè)務(wù)的核心代碼。

通過使用 Kotlin,開發(fā)者們也嘗到了甜頭,我們在國內(nèi)的合作伙伴 Camera360,使用 Kotlin 獲得了全球業(yè)務(wù)上的增長,你們可以通過圖片中的二維碼,了解關(guān)于 Camera360 的開發(fā)者故事

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

Android Studio 3.1 中 還有很多新工具,但是由于時間關(guān)系我們無法一一做介紹,總而言之,Android Studio 3.1 提供了更好的編譯速度、更快的模擬器、更全面的分析器、更好的 Kotlin 支持和更好的架構(gòu)組件的支持。歡迎開發(fā)者們在以后的開發(fā)過程中使用。

Google 開發(fā)者大會 2018 技術(shù)干貨

總結(jié)

以上是生活随笔為你收集整理的Android 在 Google 开发者大会上发布了哪些更新? | Google 开发者大会 2018的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。