1. 程式人生 > >Android8.0適配那點事(二)

Android8.0適配那點事(二)

滿足 ive 用戶 box str ati 隱式 分解 語音

小夥伴們,咱們今天咱繼續對Android8.0的適配進行分解,今天將針對啟動頁,版本適配和系統限制等進行“啃食”

1、啟動頁適配

近日,我無意中發現應用在8.0系統上面啟動頁崩潰,趕緊去找BUG,運行後發現如下異常:

技術分享圖片

翻譯後意思是:只有全屏不透明的activity才可以設置方向;

解決方案如下:

1.1、如果不考慮配置屏幕方向的話,直接將android:screenOrientation="portrait" 去掉即可;

1.2、如果既要固定屏幕方向,又解決啟動過慢導致的白(黑)屏問題,那麽可以找到你設置透明的Activity,然後在他的theme中將android:windowIsTranslucent改為false,再加入<item name="android:windowDisablePreview">true</item>;

1.3、參考Google給出的解決方案:不要禁用預覽窗口,而要遵循常見的 Material Design模式。您可以使用活動的 windowBackground主題屬性為開始活動提供簡單的自定義繪圖.


2、8.0版本安裝適配

android 8.0系統更新之後,未知應用安裝權限的開關被除掉,取而代之的是未知來源應用的管理列表,需要用戶給予允許app安裝未知來源應用的權限;

2.1、添加權限

<!--裝未知來源應用的權限-->

<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>

2.2、然後在用戶點擊更新時判斷是否開啟了該應用的“允許安裝未知來源”的權限,沒有的話,就引導用戶去開啟該應用的“允許安裝未知來源”的權限

技術分享圖片

註意:此處如果自己實現版本更新,需配合通知渠道,進行版本下載進度顯示


3、運行時權限策略變化

在 Android 8.0 之前,如果應用在運行時請求權限並且被授予該權限,系統會錯誤地將屬於同一權限組並且在清單中註冊的其他權限也一起授予應用,在8.0中此行為被糾正,系統只會授予應用明確請求的權限;

同組權限一起申請:

技術分享圖片

8.0中引入了多個與電話有關的新權限:

  • ANSWER_PHONE_CALLS 允許您的應用通過編程方式接聽呼入電話。要在您的應用中處理呼入電話,您可以使用 acceptRingingCall() 函數。

  • READ_PHONE_NUMBERS 權限允許您的應用讀取設備中存儲的電話號碼。

這些權限均被劃分為危險類別,屬於 PHONE 權限組。


1、後臺執行限制

1.1、後臺服務限制:處於空閑狀態時,應用可以使用的後臺服務存在限制。 這些限制不適用於前臺服務,因為前臺服務更容易引起用戶註意;

1.2、廣播限制:除了有限的例外情況,應用無法使用清單註冊隱式廣播。 它們仍然可以在運行時註冊這些廣播,並且可以使用清單註冊專門針對它們的顯式廣播。

註意:默認情況下,這些限制僅適用於針對 O 的應用。 不過,用戶可以從 Settings 屏幕為任意應用啟用這些限制,即使應用並不是以 O 為目標平臺。


2、後臺服務限制

系統可以區分 前臺 和 後臺 應用。 (用於服務限制目的的後臺定義與內存管理使用的定義不同;一個應用按照內存管理的定義可能處於後臺,但按照能夠啟動服務的定義又處於前臺。)如果滿足以下任意條件,應用將被視為處於前臺:

  • 具有可見 Activity(不管該 Activity 已啟動還是已暫停)。

  • 具有前臺服務。

  • 另一個前臺應用已關聯到該應用(不管是通過綁定到其中一個服務,還是通過使用其中一個內容提供程序)。 例如,如果另一個應用綁定到該應用的服務,那麽該應用處於前臺:

    • IME

    • 壁紙服務

    • 通知偵聽器

    • 語音或文本服務

如果以上條件均不滿足,應用將被視為處於後臺。

後臺服務會被kill掉,官方推薦可使用AlarmManager、SyncAdapter、JobScheduler代替後臺服務。


3、廣播限制

如果應用註冊為接收廣播,則在每次發送廣播時,應用的接收器都會消耗資源,在7.0中對廣播施加了一些限制,8.0 讓這些限制更為嚴格:

  • 針對 Android 8.0 的應用無法繼續在其清單中為隱式廣播註冊廣播接收器;

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

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

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

4、後臺位置限制

  • Android 8.0 都會對後臺應用檢索用戶當前位置的頻率進行限制(會出現後臺應用定位收不到定位信息);

(註:以上內容引自Google中國開發者網站:https://developer.android.google.cn)


新系統在手,還需多多了解其中的變化,以我們自身的能力來解決實際開發過程中的問題,各位小夥伴,你們的應用在適配8.0的過程中遇到了哪些問題,歡迎留言,共同探討並解決。如文中有誤,請留言指出.



技術分享圖片


Android8.0適配那點事(二)