Android版本適配(6.0~9.0)

1 : ?安卓6.0適配

權(quán)限適配:

動(dòng)態(tài)權(quán)限適配是 Android 6.0 最先開(kāi)始的昌跌,也是 Android 系統(tǒng)對(duì)開(kāi)發(fā)者影響最大的改動(dòng)之一, 只有屬于危險(xiǎn)權(quán)限的才需要申請(qǐng)動(dòng)態(tài)權(quán)限瘪松。

Android6.0之前,權(quán)限只需要在清單文件中遵守約定在 Android 6.0 ~ Android 8.0沃缘,危險(xiǎn)權(quán)限不需要?jiǎng)討B(tài)申請(qǐng)吓著。如果應(yīng)用在運(yùn)行時(shí)請(qǐng)求權(quán)限并且被授予該權(quán)限蒙谓,系統(tǒng)會(huì)錯(cuò)誤地將屬于同一權(quán)限組并且在清單中注冊(cè)的其他權(quán)限也一起授予應(yīng)用造烁,即對(duì)于同一組內(nèi)的權(quán)限搞动,只要有一個(gè)被同意灰羽,其他的都會(huì)被同意驮履。在 Android 8.0 之后,此行為已被糾正廉嚼。系統(tǒng)只會(huì)授予應(yīng)用明確請(qǐng)求的權(quán)限玫镐。然而一旦用戶(hù)為應(yīng)用授予某個(gè)權(quán)限,則所有后續(xù)對(duì)該權(quán)限組中權(quán)限的請(qǐng)求都將被自動(dòng)批準(zhǔn)怠噪,但是若沒(méi)有請(qǐng)求相應(yīng)的權(quán)限而進(jìn)行操作的話就會(huì)出現(xiàn)應(yīng)用 crash 的情況恐似。


低耗電模式:

當(dāng)手機(jī)沒(méi)有連接電源,屏幕關(guān)閉,并且靜置一段時(shí)間不晃動(dòng),就可以進(jìn)入低耗電模式.這時(shí)系統(tǒng)會(huì)定期退出低電量模式一會(huì),再退出一段時(shí)間把那些延遲的工作同步執(zhí)行,同時(shí)允許app訪問(wèn)網(wǎng)絡(luò).

app待機(jī)模式:

指app不在前臺(tái)進(jìn)程的情況下,如果用戶(hù)一段時(shí)間沒(méi)有使用該app,則該app進(jìn)入待機(jī)模式,系統(tǒng)會(huì)禁止該app訪問(wèn)網(wǎng)絡(luò),暫停同步和jobs,也不是絕對(duì)禁止,系統(tǒng)允許每個(gè)app每天大約一次的頻率訪問(wèn)網(wǎng)絡(luò).

app待機(jī)模式和低耗電模式的區(qū)別:

低耗電模式必須關(guān)閉屏幕處于靜止,沒(méi)有連接充電器,針對(duì)所有app;

app待機(jī)模式針對(duì)的是某一個(gè)應(yīng)用,不需要關(guān)閉屏幕,不需要手機(jī)保持靜止,只要某一個(gè)app是非前臺(tái)線程,一般用戶(hù)一段時(shí)間未使用該app,那么該app就會(huì)進(jìn)入待機(jī)模式,即使此刻用戶(hù)在使用其他app;

2:安卓7.0

APK signature scheme v2

Android 7.0 引入一項(xiàng)新的應(yīng)用簽名方案?:APK Signature Scheme v2,它能提供更快的應(yīng)用安裝時(shí)間和更多針對(duì)未授權(quán) APK 文件更改的保護(hù)矫夷。在默認(rèn)情況下,Android Studio 2.2 和 Android Plugin for Gradle 2.2 會(huì)使用 APK Signature Scheme v2 和傳統(tǒng)簽名方案來(lái)簽署您的應(yīng)用。


1.只勾選V1簽名就是傳統(tǒng)方案簽署阳仔,但是在 Android 7.0 上不會(huì)使用V2安全的驗(yàn)證方式忧陪。

?2.只勾選V2簽名7.0以下會(huì)顯示未安裝,Android 7.0 上則會(huì)使用了V2安全的驗(yàn)證方式近范。

?3.同時(shí)勾選V1和V2則所有版本都沒(méi)問(wèn)題赤嚼。

org.apache不支持問(wèn)題

// build.gradle里面加上這句話

?defaultConfig {

useLibrary 'org.apache.http.legacy'

?}

SharedPreferences閃退

Android7.0前,我們對(duì)于app的私有文件,比如sp,我們可以設(shè)置權(quán)限(MODE_WORLD_READABLE和MODE_WORLD_WRITEABLE)來(lái)讓其他應(yīng)用訪問(wèn),Android 7.0以后不能使用這個(gè)獲取,會(huì)閃退// 應(yīng)修改成MODE_PRIVATE

?SharedPreferences read = getSharedPreferences(RELEASE_POOL_DATA, MODE_WORLD_READABLE);?

進(jìn)一步增強(qiáng)低耗電模式:

Android7.0系統(tǒng)的改變主要針對(duì)于延長(zhǎng)電池的使用壽命以及減少內(nèi)存的使用,6.0需要手機(jī)處于未充電,屏幕關(guān)閉,手機(jī)處于靜止;7.0不需要手機(jī)處于靜止(例如用戶(hù)外出時(shí)把設(shè)備放在口袋里),系統(tǒng)會(huì)讓部分CPU和網(wǎng)絡(luò)受到限制,進(jìn)一步增強(qiáng)了低電耗模式.

后臺(tái)優(yōu)化:

用過(guò)蘋(píng)果手機(jī)的老鐵們想必都知道,蘋(píng)果手機(jī)是很難出現(xiàn)卡頓現(xiàn)象的,而安卓手機(jī)卡頓的較為嚴(yán)重,主要是因?yàn)樘O(píng)果系統(tǒng)里,app想在后臺(tái)一直運(yùn)行是很難的,未經(jīng)允許的app在后臺(tái)最多存活不到幾分鐘,而安卓應(yīng)用后臺(tái)悄悄啟動(dòng)的機(jī)會(huì)太多了,比如清單文件里注冊(cè)了某app的靜態(tài)廣播,靜態(tài)廣播是不受進(jìn)程影響的,比如監(jiān)聽(tīng)網(wǎng)絡(luò)狀態(tài)改變的廣播,監(jiān)聽(tīng)手機(jī)拍照或錄像的廣播,即使應(yīng)用被關(guān)閉了,一旦廣播發(fā)出,注冊(cè)了廣播的應(yīng)用也直接被喚醒,造成殺不死的現(xiàn)象,而7.0針對(duì)這一現(xiàn)象,限制了這三種廣播在清單文件的靜態(tài)注冊(cè),只能動(dòng)態(tài)注冊(cè).

文件共享:

app之間的私有文件共享只能用FileProvider這種方式.FileProvider是通過(guò)一種臨時(shí)授權(quán)的方式讓其他app來(lái)訪問(wèn)我自己app私有文件夾的方式,訪問(wèn)過(guò)一次就失效了,下次想訪問(wèn)就失效了除非再次授權(quán).

Android 8.0適配

Android 8.0中PHONE權(quán)限組新增兩個(gè)權(quán)限

ANSWER_PHONE_CALLS:允許您的應(yīng)用通過(guò)編程方式接聽(tīng)呼入電話顺又。要在您的應(yīng)用中處理呼入電話更卒,您可以使用 acceptRingingCall() 函數(shù)。 READ_PHONE_NUMBERS:權(quán)限允許您的應(yīng)用讀取設(shè)備中存儲(chǔ)的電話號(hào)碼稚照。

后臺(tái)執(zhí)行適配

8.0增加了許多特性,但是對(duì)我們開(kāi)發(fā)過(guò)程中影響比較大的主要就是后臺(tái)執(zhí)行限制,后要執(zhí)行限制分為后臺(tái)服務(wù)限制廣播限制.

1:后臺(tái)服務(wù)限制:

首先區(qū)分一下后臺(tái)和前臺(tái): 具有可見(jiàn)Activity(不管該Activity已啟動(dòng)還是已暫停),具有前臺(tái)服務(wù),另一個(gè)前臺(tái)應(yīng)用已關(guān)聯(lián)到該應(yīng)用.這是前臺(tái).否則就是后臺(tái).

對(duì)于后臺(tái)服務(wù)的限制就是指不讓處于后臺(tái)的app任意創(chuàng)建和運(yùn)行前臺(tái)和后臺(tái)服務(wù).處于前臺(tái)時(shí),應(yīng)用可以自由創(chuàng)建和運(yùn)行前臺(tái)服務(wù)與后臺(tái)服務(wù).進(jìn)入后臺(tái)時(shí),在一個(gè)持續(xù)數(shù)分鐘的時(shí)間窗內(nèi),應(yīng)用仍可以創(chuàng)建和使用服務(wù).時(shí)間窗結(jié)束后應(yīng)用被視為處于空閑狀態(tài).此時(shí)系統(tǒng)將停止應(yīng)用的后臺(tái)服務(wù).

在Android8.0之前,創(chuàng)建前臺(tái)服務(wù)的方式通常是先創(chuàng)建一個(gè)后臺(tái)服務(wù),然后將后臺(tái)服務(wù)推向前臺(tái).Android8.0之后,系統(tǒng)不允許后臺(tái)應(yīng)用創(chuàng)建后臺(tái)服務(wù).因此引入了一個(gè)全新的方法Context.startForegroundService(),以在前臺(tái)啟動(dòng)新服務(wù).在系統(tǒng)創(chuàng)建服務(wù)后,應(yīng)用有五秒時(shí)間來(lái)調(diào)用該服務(wù)的startForegroud()方法來(lái)把后臺(tái)服務(wù)推向前臺(tái)顯示并在通知欄顯示服務(wù)可見(jiàn),如果應(yīng)用在此時(shí)間內(nèi)未調(diào)用startForegroud(),則系統(tǒng)將停止服務(wù)并聲明此應(yīng)用ANR.

2:廣播限制:

Android 8.0中把廣播分為隱式和顯示兩種,并禁止app在清單文件中注冊(cè)部分隱式廣播. 只能通過(guò)動(dòng)態(tài)方式注冊(cè). 為了更好的管制通知的提醒蹂空,不想一些不重要的通知打擾用戶(hù),新增了通知渠道果录,用戶(hù)可以根據(jù)渠道來(lái)屏蔽一些不想要的通知上枕。




Android 9.0適配

在9.0中有一些原生的劉海屏的適配,電源管理和http網(wǎng)絡(luò)請(qǐng)求的限制.

http網(wǎng)絡(luò)請(qǐng)求的限制就是如果我們的app target版本是28+,那么不管我們是原生的HttpUrlConnection還是okhttp,那么如果使用http請(qǐng)求網(wǎng)絡(luò)將會(huì)報(bào)錯(cuò).解決辦法有三種:

1:降低target版本,小于28即可

2:http換成https.

3:在res目錄下新增一個(gè)xml目錄,再在xml目錄下建立一個(gè)文件名任意的xml文件,內(nèi)容大概就是運(yùn)行開(kāi)啟http請(qǐng)求.


然后在清單文件里application標(biāo)簽增加以下屬性:







最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市弱恒,隨后出現(xiàn)的幾起案子辨萍,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,036評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件锈玉,死亡現(xiàn)場(chǎng)離奇詭異爪飘,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)拉背,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)师崎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人椅棺,你說(shuō)我怎么就攤上這事犁罩。” “怎么了两疚?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,411評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵床估,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我诱渤,道長(zhǎng)丐巫,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,622評(píng)論 1 293
  • 正文 為了忘掉前任源哩,我火速辦了婚禮鞋吉,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘励烦。我一直安慰自己谓着,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,661評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布坛掠。 她就那樣靜靜地躺著赊锚,像睡著了一般。 火紅的嫁衣襯著肌膚如雪屉栓。 梳的紋絲不亂的頭發(fā)上舷蒲,一...
    開(kāi)封第一講書(shū)人閱讀 51,521評(píng)論 1 304
  • 那天,我揣著相機(jī)與錄音友多,去河邊找鬼牲平。 笑死,一個(gè)胖子當(dāng)著我的面吹牛域滥,可吹牛的內(nèi)容都是我干的纵柿。 我是一名探鬼主播,決...
    沈念sama閱讀 40,288評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼启绰,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼昂儒!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起委可,我...
    開(kāi)封第一講書(shū)人閱讀 39,200評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤渊跋,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體拾酝,經(jīng)...
    沈念sama閱讀 45,644評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡燕少,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,837評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了微宝。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片棺亭。...
    茶點(diǎn)故事閱讀 39,953評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡虎眨,死狀恐怖蟋软,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情嗽桩,我是刑警寧澤岳守,帶...
    沈念sama閱讀 35,673評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站碌冶,受9級(jí)特大地震影響湿痢,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜扑庞,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,281評(píng)論 3 329
  • 文/蒙蒙 一譬重、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧罐氨,春花似錦臀规、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,889評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至租悄,卻和暖如春谨究,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背泣棋。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,011評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工胶哲, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人潭辈。 一個(gè)月前我還...
    沈念sama閱讀 48,119評(píng)論 3 370
  • 正文 我出身青樓鸯屿,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親萎胰。 傳聞我的和親對(duì)象是個(gè)殘疾皇子碾盟,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,901評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Android版本差異適配方案(5.0-9.0) 一個(gè)好的APP最好支持90%設(shè)備,由于不同版本系統(tǒng)提供的API可...
    yinhaide閱讀 3,317評(píng)論 4 32
  • 這篇文章用來(lái)記錄學(xué)習(xí)和開(kāi)發(fā)時(shí)遇到的版本適配問(wèn)題技竟,持續(xù)更新 全面屏冰肴、劉海屏的適配:Android 9 支持最新的全面...
    南歌ccc閱讀 2,918評(píng)論 1 16
  • 前言 本文主要針對(duì)Android O的適配,文中大部分內(nèi)容將來(lái)自官網(wǎng),本文只是總結(jié)提取出適配需要的注意點(diǎn)熙尉,關(guān)于An...
    GrayMonkey閱讀 4,074評(píng)論 0 5
  • 系統(tǒng)角度解讀Android P新特性Android5.0 211.Android Runtime(ART)大多數(shù)...
    天空在微笑閱讀 4,100評(píng)論 0 37
  • 生命的長(zhǎng)度人都一樣椎椰,而深度與寬度是不同的厦幅,快樂(lè)每一天,浪漫與快樂(lè)取決于心態(tài)慨飘,還有調(diào)節(jié)心情的思維與抵抗外界負(fù)能量的免...
    茶茶霧閱讀 140評(píng)論 0 3