溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Android8.0適配那點(diǎn)事(二)

發(fā)布時(shí)間:2020-05-24 10:15:16 來源:網(wǎng)絡(luò) 閱讀:15482 作者:wx5874f4d68b3b0 欄目:軟件技術(shù)

小伙伴們,咱們今天咱繼續(xù)對(duì)Android8.0的適配進(jìn)行分解,今天將針對(duì)啟動(dòng)頁(yè),版本適配和系統(tǒng)限制等進(jìn)行“啃食”

1、啟動(dòng)頁(yè)適配

近日,我無(wú)意中發(fā)現(xiàn)應(yīng)用在8.0系統(tǒng)上面啟動(dòng)頁(yè)崩潰,趕緊去找BUG,運(yùn)行后發(fā)現(xiàn)如下異常:

Android8.0適配那點(diǎn)事(二)

翻譯后意思是:只有全屏不透明的activity才可以設(shè)置方向;

解決方案如下:

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

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

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


2、8.0版本安裝適配

 android 8.0系統(tǒng)更新之后,未知應(yīng)用安裝權(quán)限的開關(guān)被除掉,取而代之的是未知來源應(yīng)用的管理列表,需要用戶給予允許app安裝未知來源應(yīng)用的權(quán)限;

2.1、添加權(quán)限

 <!--裝未知來源應(yīng)用的權(quán)限-->

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

2.2、然后在用戶點(diǎn)擊更新時(shí)判斷是否開啟了該應(yīng)用的“允許安裝未知來源”的權(quán)限,沒有的話,就引導(dǎo)用戶去開啟該應(yīng)用的“允許安裝未知來源”的權(quán)限

Android8.0適配那點(diǎn)事(二)

注意:此處如果自己實(shí)現(xiàn)版本更新,需配合通知渠道,進(jìn)行版本下載進(jìn)度顯示


3、運(yùn)行時(shí)權(quán)限策略變化

在 Android 8.0 之前,如果應(yīng)用在運(yùn)行時(shí)請(qǐng)求權(quán)限并且被授予該權(quán)限,系統(tǒng)會(huì)錯(cuò)誤地將屬于同一權(quán)限組并且在清單中注冊(cè)的其他權(quán)限也一起授予應(yīng)用,在8.0中此行為被糾正,系統(tǒng)只會(huì)授予應(yīng)用明確請(qǐng)求的權(quán)限;

同組權(quán)限一起申請(qǐng):

Android8.0適配那點(diǎn)事(二)

8.0中引入了多個(gè)與電話有關(guān)的新權(quán)限:

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

  • READ_PHONE_NUMBERS 權(quán)限允許您的應(yīng)用讀取設(shè)備中存儲(chǔ)的電話號(hào)碼。

這些權(quán)限均被劃分為危險(xiǎn)類別,屬于 PHONE 權(quán)限組。


1、后臺(tái)執(zhí)行限制

1.1、后臺(tái)服務(wù)限制:處于空閑狀態(tài)時(shí),應(yīng)用可以使用的后臺(tái)服務(wù)存在限制。 這些限制不適用于前臺(tái)服務(wù),因?yàn)榍芭_(tái)服務(wù)更容易引起用戶注意;

1.2、廣播限制:除了有限的例外情況,應(yīng)用無(wú)法使用清單注冊(cè)隱式廣播。 它們?nèi)匀豢梢栽谶\(yùn)行時(shí)注冊(cè)這些廣播,并且可以使用清單注冊(cè)專門針對(duì)它們的顯式廣播。

注意:默認(rèn)情況下,這些限制僅適用于針對(duì) O 的應(yīng)用。 不過,用戶可以從 Settings 屏幕為任意應(yīng)用啟用這些限制,即使應(yīng)用并不是以 O 為目標(biāo)平臺(tái)。


2、后臺(tái)服務(wù)限制

系統(tǒng)可以區(qū)分 前臺(tái) 和 后臺(tái) 應(yīng)用。 (用于服務(wù)限制目的的后臺(tái)定義與內(nèi)存管理使用的定義不同;一個(gè)應(yīng)用按照內(nèi)存管理的定義可能處于后臺(tái),但按照能夠啟動(dòng)服務(wù)的定義又處于前臺(tái)。)如果滿足以下任意條件,應(yīng)用將被視為處于前臺(tái):

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

  • 具有前臺(tái)服務(wù)。

  • 另一個(gè)前臺(tái)應(yīng)用已關(guān)聯(lián)到該應(yīng)用(不管是通過綁定到其中一個(gè)服務(wù),還是通過使用其中一個(gè)內(nèi)容提供程序)。 例如,如果另一個(gè)應(yīng)用綁定到該應(yīng)用的服務(wù),那么該應(yīng)用處于前臺(tái):

    • IME

    • 壁紙服務(wù)

    • 通知偵聽器

    • 語(yǔ)音或文本服務(wù)

如果以上條件均不滿足,應(yīng)用將被視為處于后臺(tái)。

后臺(tái)服務(wù)會(huì)被kill掉,官方推薦可使用AlarmManager、SyncAdapter、JobScheduler代替后臺(tái)服務(wù)。


3、廣播限制

如果應(yīng)用注冊(cè)為接收廣播,則在每次發(fā)送廣播時(shí),應(yīng)用的接收器都會(huì)消耗資源,在7.0中對(duì)廣播施加了一些限制,8.0 讓這些限制更為嚴(yán)格:

  • 針對(duì) Android 8.0 的應(yīng)用無(wú)法繼續(xù)在其清單中為隱式廣播注冊(cè)廣播接收器;

  • 應(yīng)用可以繼續(xù)在它們的清單中注冊(cè)顯式廣播;

  • 應(yīng)用可以在運(yùn)行時(shí)使用 Context.registerReceiver() 為任意廣播(不管是隱式還是顯式)注冊(cè)接收器;

  • 需要簽名權(quán)限的廣播不受此限制所限,因?yàn)檫@些廣播只會(huì)發(fā)送到使用相同證書簽名的應(yīng)用,而不是發(fā)送到設(shè)備上的所有應(yīng)用。

4、后臺(tái)位置限制

  • Android 8.0 都會(huì)對(duì)后臺(tái)應(yīng)用檢索用戶當(dāng)前位置的頻率進(jìn)行限制(會(huì)出現(xiàn)后臺(tái)應(yīng)用定位收不到定位信息);

(注:以上內(nèi)容引自Google中國(guó)開發(fā)者網(wǎng)站:https://developer.android.google.cn)


新系統(tǒng)在手,還需多多了解其中的變化,以我們自身的能力來解決實(shí)際開發(fā)過程中的問題,各位小伙伴,你們的應(yīng)用在適配8.0的過程中遇到了哪些問題,歡迎留言,共同探討并解決。如文中有誤,請(qǐng)留言指出.



Android8.0適配那點(diǎn)事(二)


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI