欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android Q 要來了,一個影響國內(nèi) 90% App 的適配項!

  發(fā)布時間:2019-08-13 14:48:56   作者:Android技術(shù)干貨分享   我要評論
Android Q 在今年 Q3 就準(zhǔn)備發(fā)布正式版了,但有一個影響 90% 應(yīng)用的適配改動。Android Q 具有更強的隱私保護,其中有一條,它開始限制后臺 App 啟動 Activity。感興趣的可以了解一下

一. Android Q 的一項適配

Android Q 在今年 Q3 就準(zhǔn)備發(fā)布正式版了,但有一個影響 90% 應(yīng)用的適配改動。

目前,不少 Android App 都有一個啟動界面(Launch/Splash Screen),即應(yīng)用啟動時,在顯示主頁前增加一個有內(nèi)容的頁面,這好像變成了 App 的標(biāo)配。

這種設(shè)計,最初是解決冷啟動時,會有白屏或黑屏的閃動問題,其目的是為了提高用戶體驗。

后來發(fā)現(xiàn)在這個過程中,不干點什么好像有點浪費,那不如拿來初始化數(shù)據(jù)、SDK,再加載個廣告吧,總之,啟動頁承載的業(yè)務(wù)越來越多了。

在用戶的角度,可以看見的就是,App 啟動時,先有個啟動頁,在啟動頁加載了一個廣告,倒數(shù) 3、2、1,倒數(shù)歸零后跳到真實的主頁。這種情況下,啟動頁就承載了加載廣告的邏輯。通常的代碼實現(xiàn)是在廣告顯示后,增加一個倒數(shù)的定時器,在倒數(shù)歸零的時候,再去調(diào)用 startActivity() 跳轉(zhuǎn)到真實的主頁上。

有興趣可以試試,不少 App 在啟動后,立即按 Home 鍵,過 3s(廣告時間?) 之后又會被調(diào)起來。

本來呢,這種設(shè)計也是無傷大雅的,但是 Android Q 來了,就不一樣了。最近剛發(fā)布了 Android Q Beta 4 版本,按照其時間表來看,今年第三個季度就會發(fā)布正式版。

Android Q 具有更強的隱私保護,其中有一條,它開始限制后臺 App 啟動 Activity。

以最新的 Android Q Beta 4 來舉例,當(dāng)你的 App 處于后臺時,一旦嘗試開啟新的頁面,會發(fā)生什么呢?首先你的新頁面肯定是打不開的,在現(xiàn)有的 Beta 版本上,系統(tǒng)還會輸出一條警告 Log,并彈出一條 Toast。
例如,我們開發(fā)者比較常用的 掘金App。

猜想,在正式版發(fā)布時,應(yīng)該會去掉此 Toast 警告,沒必要以這么強的提示來提醒用戶。

但是這依然是我們需要提前做好適配準(zhǔn)備的。畢竟在不少快速迭代的項目中,啟動速度并不是優(yōu)先考慮優(yōu)化的指標(biāo),各種初始化也很隨意的就放在了啟動頁里,到最后不得不優(yōu)化的時候,就比較費時和令人頭疼了。

二. MD 設(shè)計里的啟動頁

在啟動頁里,做大量的邏輯,甚至強制間隔幾秒(顯示廣告),這種做法本身在 Google 的設(shè)計規(guī)范就是不推薦的,不少海外大廠的 App,也是遵循此設(shè)計規(guī)范。

而國內(nèi)的 App 里,在啟動頁里加塞點功能,好像是一種更為普遍的做法。

在 Material Design 的設(shè)計規(guī)范中,也明確定義了啟動圖的設(shè)計規(guī)范,其核心就是為了解決冷啟動時,那個短暫的白屏不至于顯得太突兀,設(shè)計的好了,還可以增加品牌的辨識度。

啟動頁面的設(shè)計,其重點在于,它僅僅在應(yīng)用啟動的瞬間顯示,也就是說,啟動頁面不應(yīng)該導(dǎo)致應(yīng)用的啟動變慢,強制顯示一段時間廣告,更是不應(yīng)該的做法。

畢竟打開 App 是為了它的功能,更快把首屏展示給用戶,體驗就更好。

三. Q 的后臺啟動建議

在 Android Q 之前的版本中,本質(zhì)上就已經(jīng)對一些頁面的顯示做了限制,例如 Android 8.0 增加了懸浮窗權(quán)限,其實更多的也是為了不讓一些惡意的 App 打擾用戶。

這次 Android Q 更徹底,當(dāng)前處在后臺的 App,沒有打開新頁的權(quán)限,這種設(shè)定,按照我們常規(guī)的思考,對開發(fā)者的影響應(yīng)該不大,畢竟大多數(shù)時候,我們并不需要在后臺彈出一個頁面。

這不是撞上了國內(nèi)較重的啟動頁設(shè)計,才會出現(xiàn)問題。

針對必要的顯示,Google 也明確給出了解決建議,可以判斷應(yīng)用在后臺時,通過向用戶發(fā)送一條通知(Notification),來由用戶決定是否開啟這個頁面。

這種解決方案,在本文這個語境中,自然是沒有什么鳥用的,走都走了,總不能抱住用戶的大腿。

這種安全級的升級優(yōu)化,我覺得按照官方的規(guī)范,適配就好了。

四. 適配思路

4.1 遵循 MD 規(guī)范

前面也提到,如果我們遵循 Material Design 的規(guī)范,只讓啟動圖,作為一個對冷啟動的優(yōu)化,瞬時展示,之后立即顯示主頁,就不會有問題。

在這個過程中,全程只有一個 Activity 參與,自然無需啟動一個新頁面,也就不會有問題。唯一需要注意的是,在 setContentView() 方法之前,別忘了修改當(dāng)前頁面的 Theme。

對于現(xiàn)有項目,這種優(yōu)化,其實我們大部分的工作,來自如何協(xié)調(diào)已經(jīng)在啟動頁中的各種資源的初始化邏輯,等于之前有一個空轉(zhuǎn)的時間被利用起來初始化資源了,現(xiàn)在這些已經(jīng)占用的時間,沒有了。

不過也別擔(dān)心,其實有不少優(yōu)秀的開源庫就在解決這些問題,例如之前推文中介紹的 Alibaba 的 Alpha 庫,就是一個基于 PERT 圖構(gòu)建的 Android 異步啟動框架。

4.2 先判斷是否前臺再跳轉(zhuǎn)

正如小標(biāo)題上寫的,我們可以在啟動頁跳轉(zhuǎn)到主頁時,檢測當(dāng)前頁面是否在前臺,如果不在,就放棄跳轉(zhuǎn)。因為在后臺時,并沒有打開新頁的動作,自然也不會有警告提示。

這算是一種,在現(xiàn)有項目基礎(chǔ)之上,改動最小適配方案。

此時再細(xì)化一些,在我們放棄跳轉(zhuǎn)后,可以有兩個選擇:

1. 關(guān)閉啟動頁,下次再被點擊重走啟動頁邏輯

這很好理解,把啟動頁 finish() 掉,假裝它從來沒有啟動過。下次用戶再啟動時,之前所有的步驟再走一遍,該顯示的廣告再多一次曝光。

現(xiàn)在有一些 App 已經(jīng)是這種方案在優(yōu)化。

2. 關(guān)閉啟動頁,并設(shè)置標(biāo)記位

在發(fā)現(xiàn)啟動頁不在前臺顯示時,不做跳轉(zhuǎn)的動作,同時設(shè)置一個標(biāo)志位,但是此時不關(guān)閉當(dāng)前頁面。下次啟動頁再被啟動時,直接跳轉(zhuǎn)到主頁。

如果選擇此方案,我推薦第二種細(xì)化的方案。

4.3 Activity + Fragment 的方案

此禁止的主要就是開啟新的 Activity,但是在同一個 Activity 中,使用不同的 Fragment 來承載不同的業(yè)務(wù)功能,其實是可以的。

等于是把之前的 SplashActivity,變成 SplashFragment,在主頁上先添加 SplashFragment 來完成初始化或者廣告的顯示,在顯示完成之后,移除此 SplashFragment 就好。

這種方案其實是把舊的代碼結(jié)構(gòu)調(diào)整了,具體邏輯變動并不大,唯一需要注意的依然是 Theme 的切換。

五. 小結(jié)時刻

每一次新系統(tǒng)的發(fā)布,或多或少都伴隨著開發(fā)者的一波適配,大多數(shù)時候,官方也會給出明確的適配方案,來幫助開發(fā)者更快適配新系統(tǒng)。
不過啟動頁面限制這一項,應(yīng)該不在 Android 適配規(guī)范的計劃內(nèi),國內(nèi)開發(fā)者還是做好提前準(zhǔn)備。如果平時在項目迭代的時候就注意了很多代碼的規(guī)范,這些改動就相對平滑一些。

 https://developer.android.google.cn/preview/privacy/background-activity-starts

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論