您好,登錄后才能下訂單哦!
小伙伴們,咱們今天咱繼續對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的過程中遇到了哪些問題,歡迎留言,共同探討并解決。如文中有誤,請留言指出.
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。