當前位置:
首頁 > 最新 > Android 8.0 Oreo 開發者常見問題

Android 8.0 Oreo 開發者常見問題

GIF/429K

熱情的開發者們都想儘快吃上 "Android Oreo",黑白分明的 Oreo 就像二進位代碼一樣,深深吸引著技術達人們。

自從一個月前我們發布了 Android Oreo 之後,收到了大量留言諮詢,關注這個重要新版本特性的朋友們留下了許多有代表性的問題。

為了儘快讓大家了解 Oreo 的特性,以及它與之前版本 Android 的區別,我們本月推出的《Android 開發者 FAQ》就為開發者們解答一些 「奧利奧」 的相關問題。

Q: 這些新特性是否提供向下兼容,如果提供,兼容到哪個版本?

A:針對所有 API 級別的應用:

網路連接和 HTTP(S) 連接

集合的處理

記錄未捕獲的異常

輸入和導航

安全性

後台執行限制

隱私性

針對 Android O 的應用:

內容變更通知

視圖焦點

許可權

集合的處理

媒體

類載入行為

Q: 關於 Android Oreo 有個問題想問一下:在該版本中,除了特定的系統隱式廣播接收器,在其他系統廣播接收器不能再以隱式進行註冊。那麼,自定義廣播是否可以註冊為隱式呢?

A: 自定義廣播是可以註冊為隱式的,如果應用註冊為接收廣播,則在每次發送廣播時,應用的接收器都會消耗資源。 如果多個應用註冊為接收基於系統事件的廣播,這會引發問題;觸發廣播的系統事件會導致所有應用快速並連續消耗資源,從而降低用戶體驗。

Android 8.0 讓這些限制更為嚴格

針對 Android 8.0 的應用無法繼續在其清單中為隱式廣播註冊廣播接收器。 隱式廣播是一種不專門針對該應用的廣播。 例如,ACTION_PACKAGE_REPLACED 就是一種隱式廣播,因為它將發送到註冊的所有偵聽器,讓後者知道設備上的某些軟體包已被替換。

不過,ACTION_MY_PACKAGE_REPLACED 不是隱式廣播,因為不管已為該廣播註冊偵聽器的其他應用有多少,它都會只發送到軟體包已被替換的應用。

應用可以繼續在它們的清單中註冊顯式廣播。

應用可以在運行時使用 Context.registerReceiver ( ) 為任意廣播(不管是隱式還是顯式)註冊接收器。

需要簽名許可權的廣播不受此限制所限,因為這些廣播只會發送到使用相同證書籤名的應用,而不是發送到設備上的所有應用。

在許多情況下,之前註冊隱式廣播的應用使用 JobScheduler 作業可以獲得類似的功能。例如,一款社交照片應用可能需要不時地執行數據清理,並且傾向於在設備連接到充電器時執行此操作。

之前,應用已經在清單中為 ACTION_POWER_CONNECTED 註冊了一個接收器;當應用接收到該廣播時,它會檢查清理是否必要。 為了遷移到 Android 8.0,應用將該接收器從其清單中移除。應用將清理作業安排在設備處於空閑狀態和充電時運行。

Q: 如何設置我的 Android 8.0 Oreo 設備進行移動列印?

A: 隨著 Android 8.0 Oreo 的發布,您無需設置即可在 Android 設備列印。現在已經內置移動列印。 您可以使用 Android 8.0 Oreo 設備上的默認列印服務進行核心列印功能,無需安裝列印服務或下載移動列印應用程序

Q: Android Oreo 還有什麼其他有趣的東西?

A:

智能文本選擇

在支持它的應用程序中,您可以在任何地方輕按地址,URL,電話號碼或電子郵件地址。Android 會識別文本的內容,並快速為您選擇整個字元串,自己找出適當的開始和結束點,然後將為您提供一鍵選擇,選擇最合乎邏輯的位置(例如,帶有號碼的新電話或地址)。

更容易訪問的本地文件管理器

AndroidOreo 的文件管理器有一些新的選擇,包括顯示您的完整的內部存儲的能力,並在應用程序內部打開本機文件管理器。它幾乎與第三方文件管理器一樣強大,它允許基本的瀏覽和文件操作 , 這對大多數人來說是足夠使用的。

更智能的 Wi-Fi 切換

深深的沉浸在 Pixel 手機的網路設置菜單中,是AndroidOreo 最美味的選擇之一:允許您的手機隨時隨地在已知的高質量網路範圍內自動打開 Wi-Fi。而無需在第三方應用程序中進行複雜的配置來完成這種額外的選擇。(此功能目前僅適用於 Pixel 手機。)

Q: Android O 的外觀與我現在有什麼不同嗎?

A: Oreo 在 Android 美學方面並不是一個巨大的變化,但它確實引入了一些明顯的調整和細化到核心用戶界面。通知和快速設置面板可能是最明顯的示例。它現在是一個更輕的色調,具有更多的信息和一些重新排列的元素。

通知本身也適用於 Oreo 的特定主題:例如,在 Google Play 音樂和 YouTube 的播放控制中,通知採用與當前播放的歌曲或視頻的藝術品相匹配的漂亮配色方案。

Q: Android O 對於多語言和國家有什麼新的調整嗎?

A: Android 7.0(API 級別 24)引入能指定默認類別語言區域的概念,但是某些 API 在本應使用默認 DISPLAY 類別語言區域時,仍然使用不帶參數的通用 Locale.getDefault ( ) 函數。

在 Android 8.0 中,以下函數使用 Locale.getDefault (Category.DISPLAY) 來代替 Locale.getDefault ( ):

Currency.getDisplayName( )

Currency.getSymbol( )

Locale.getDisplayScript ( )

當為 Locale 參數指定的 displayScript 值不可用時,Locale.getDisplayScript (Locale) 同樣回退到 Locale.getDefault( )。

與語言區域和國際化有關的其他變更如下:

調用 Currency.getDisplayName(null) 會引發 NullPointerException。

時區名稱的分析方法發生變化。之前,Android 設備使用在啟動時初始化的系統時鐘值緩存用於分析日期時間的時區名稱。因此,如果在啟動時或其他較為罕見的情況下系統時鐘出錯,可能對分析產生負面影響。

現在,一般情況下,在分析時區名稱時分析邏輯將使用 ICU 和當前系統時鐘值。此項變更可提供更加準確的結果,如果您的應用使用 SimpleDateFormat 等類,此結果可能與之前的 Android 版本不同。

Android 8.0 將 ICU 的版本更新至版本 58

Q:我最近在進行網頁開發,Android O 對 WebView 有沒有一些特別的修改?

A:Android 自動填充框架內置提供對自動填充功能的支持,對於安裝到運行 Android 8.0 的設備上的應用,下列 WebView 對象相關的方法發生了變化:

WebSettings

getSaveFormData ( ) 函數現在返回 false。之前此函數返回為 true。

調用 setSaveFormData( )不再有任何效果。

WebViewDatabase

調用 clearFormData( )不再有任何效果。

hasFormData( )函數現在返回 false。之前當表單包含數據時,此函數返回為 true。

Q: Android O 後台的位置限制影響哪些 API?

A:Fused Location Provider (FLP)

如果您的應用運行在後台,位置系統服務只會根據 Android 8.0 行為變更中定義的間隔,按每小時幾次的頻率為其計算新位置。即使您的應用請求進行更頻繁的位置更新,也仍是如此。

如果您的應用運行在前台,與 Android 7.1.1(API 級別 25)相比,在位置採樣率上不會有任何變化。

Geofencing

後台應用可以高於接收 Fused Location Provider 更新的頻率接收地理圍欄轉換事件。

地理圍欄事件的平均響應時間是大約每兩分鐘一次。

GNSS Measurements 和 GNSS Navigation Messages

當您的應用位於後台時,註冊用於接收 GnssMeasurement 和 GnssNavigationMessage 輸出的回調會停止執行。

Location Manager

提供給後台應用的位置更新只會根據 Android 8.0 行為變更中定義的間隔,按每小時幾次的頻率提供。

*註:如果運行您的應用的設備安裝了 Google Play 服務,強烈建議您改用 Fused Location Provider (FLP)。

WLAN 管理器

startScan ( ) 方法對後台應用執行完整掃描的頻率僅為每小時數次。如果不久之後後台應用再次調用此方法, WifiManager 類將提供上次掃描所緩存的結果。

Q: 這次 Android O 對聯繫人做了哪些改動?

A:在之前版本的 Android 中,聯繫人提供程序組件允許開發者獲取每個聯繫人的使用情況數據。此使用情況數據揭示了與某個聯繫人相關聯的每個電子郵件地址和每個電話號碼的信息,包括與該聯繫人聯繫的次數以及上次聯繫該聯繫人的時間。請求 READ_CONTACTS 許可權的應用可以讀取此數據。

如果應用請求 READ_CONTACTS 許可權,它們仍可以讀取此數據。從 Android 8.0 開始,使用情況數據查詢會返回近似值,而不是精確值。不過,Android 系統內部仍然會保留精確值,因此,此變更不會影響 auto-complete API。

此行為變更會影響以下查詢參數:

TIMES_CONTACTED

TIMES_USED

LAST_TIME_CONTACTED

LAST_TIME_USED


點擊展開全文

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 谷歌開發者 的精彩文章:

TAG:谷歌開發者 |