摘要:會議主要是加深開發者對的了解,從而幫助開發者做好的兼容工作。因此本篇我會選擇性說明一些在上你需要兼容的一些事情。那么現在有哪些會用到這種呢舉一個大家熟悉的。另外目前可以通過在清單文件設置是否啟用。因此強烈建議將這個工作排上兼容行程。
5 月 20 號參加了 Android Q Labs,因此本篇說一說會議的部分內容以及自己的一些想法。
會議主要是加深開發者對 Android Q 的了解,從而幫助開發者做好 Android Q 的兼容工作。
因此本篇我會選擇性說明一些在 Android Q 上你需要兼容的一些事情。
1. 后臺 Activity 啟動限制首先我們說說為什么要限制后臺 Activity 的啟動。
Android Q 之前的情況如下:
考慮下面的幾個場景:
我在開車過程中使用導航地圖進行導航
我在使用拍照功能拍攝一個關鍵場景的視頻
我在玩游戲,比如王者榮耀,正準備團戰拿五殺的時刻 ......
假設在上面的幾個場景中,突然后臺 Activity 彈出一個框,可能是廣告框,也可能是搶占我界面的其他界面。
這個時候我覺得內心是奔潰的,而且用戶體驗超級不好。
基于此,Android Q 里面引入了對后臺 Activity 啟動的限制。
注意關鍵的一個點是這個變化對所有在 Android Q 上運行的應用都會有影響。無論你的 targetSDK 版本。
所以如果你的 APP 存在這種場景的情況下,你就需要做一下額外處理了。
</>復制代碼
基本的處理方式是通過 Notification 彈一個通知,如果用戶想點再點擊進入你的 Activity。
那么現在有哪些 APP 會用到這種呢?舉一個大家熟悉的。
這邊測試了一下,微信語音通話是會直接從后臺啟動全屏覆蓋的,所以可能微信需要針對這個行為變更做處理。
2. 存儲的變化先看下 Q 之前的情況:
Q 的變化分兩部分來說明吧。
一部分是 MediaStore 的處理,另一部分是分區存儲的處理。
先說說 MediaStore,什么是 MediaStore 呢?
對于 MediaStore,Q 的處理如下:
可以看到對于 MediaStore,可以直接寫,讀的話僅僅限于自己寫進去的文件。如果要查看其它應用提供的內容,需要獲取讀權限。
另外你會發現 MediaStore 上面只有媒體相關的,如果文件是非媒體類型呢?所以 Q 新增 MediaStore.Downloads,如下:
總結起來如下:
權限的變更:在沒卸載的情況下,自己 APP 寫或者讀 MediaStore 媒體文件不需要權限。讀其他的需要權限。卸載后讀自己之前寫入的也需要權限。
另外還有一個就是圖片有一個位置信息,這個對用戶來說也是隱私,因此需要做額外處理。
說完了 MediaStore,接下來說說分區存儲。
總結起來就是分區存儲模式下,不能夠再直接訪問 /sdcard 下的文件,而要通過 MediaStore 或者 SAF。當然自己 packagename 命名的目錄下面還是可以訪問的。
另外目前可以通過在清單文件設置是否啟用。可以設置 targetSDK 為 Q 的應用不啟用,也可以設置 targetSDK 低于 Q 的啟用。通過代碼可以確認是否處于分區存儲模式下。
推薦盡快完成適配,因為目前是為了給開發者更多時間適應這個變化,等到下一個版本 Android R 的時候會強制執行分區存儲模式,到時候清單文件的設置也是沒用的。因此強烈建議將這個工作排上兼容行程。當然在 Q 的兼容上可以根據自身業務進度進行設置,假設時間不夠,可以暫時不啟用,但是后續需要排期處理。
3. 位置權限我們看看 Android P 申請位置權限的對話框:
可以看到只有允許和拒絕兩個選項。
現在看看 Android Q 的:
會發現多了一些選項,其中有一個僅在使用該應用時允許。
在 Android P 的時候,清單文件只需要申請一個權限:
而在 Q 上面,有兩個,其中一個有 background 的。
之所以有兩個,就是希望盡量少的獲取權限,除非是你的 APP 真的有這個需求。在申請的時候也建議增量申請,什么意思呢?
首先第一步先獲取位置權限:
在用戶允許的情況下,如果 APP 需要,再進行增量權限請求:
推薦的位置權限最佳實踐如下:
4. 深色主題
Q 支持深色主題,兼容有兩種方式。
一種就是簡單粗暴,適合時間少的。 一種就是推薦的,適合有足夠時間的。
簡單的方式如果是全局設置,只需要設置主題即可:
如果你需要對單個 View 做設置,也是可以的:
推薦的方式是使用 DayNight。
不過我在測試區啟動深色主題時發現有點卡,估計后面系統還需要優化。
5. BubbleView 和指紋識別BubbleView 其實就是懸浮窗。指紋識別也是 Android Q 引入的一個官方方式。 這個不需要做兼容,算是新功能,這里不贅述。
6. Kotlin vs Flutter
其實在代碼演示的時候,我注意到 PPT 上面的代碼基本都是 Kotlin。
包括之前的 Kotlin-first 以及這次 Q & A 環節也有小伙伴提問到底 Google 主推 Kotlin 還是 Flutter。
我這邊說下我的看法吧。
我覺得 Kotlin 和 Flutter 不沖突。
首先第一個 Kotlin 是一門語言,而 Flutter 是一個跨平臺方案。
如果你的 APP 有跨平臺的需求,或者有很多頁面需要開發,人手不足,功能迭代比較頻繁,那么你可以了解或者嘗試使用 Flutter 來開發界面。一套代碼,兩端運行。尤其 Flutter 1.5 布局很廣,涵蓋了移動端、Web、桌面端和嵌入式。
對于 Android 開發者,可以看我的 Flutter 即學即用系列博客快速入門。
說完了 Flutter,說下 Kotlin 吧。
Kotlin 是一門語言,語言是干嘛的?是實現我們業務的工具。
假設現在 Java 和 Kotlin 都可以實現我們的業務功能,并且官方都支持這兩種語言,你有必要花很多時間去多帶帶學習 Kotlin 嗎?我覺得沒太大必要。
所以我覺得對待 Kotlin 你可以了解一下,能夠看懂 Kotlin 代碼,會寫簡單的 Demo,我覺得就夠了。
當然如果你時間足夠,想多學一門語言,完全沒問題。
以上是參加這次會議的一些簡單總結和看法,更多內容通過下面的全程錄像了解。
本次 Android Q Labs 全程錄像可以通過鏈接觀看:Android Q Labs
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/7864.html
摘要:瀏覽器執行機制瀏覽器對于請求資源擁有一系列成熟的緩存策略。只要有相應的緩存響應頭要求緩存,瀏覽器客戶端都會對資源緩存一份,當然緩存響應頭也有優先級的。緩存模式瀏覽器緩存可以分為兩種模式,強緩存和協商緩存。具體請看上面的瀏覽器緩存流程圖。 緩存是提升用戶訪問速度,節省帶寬,減輕服務器壓力的必經之道。 下面都是針對的Http 1.1來說明,HTTP緩存都是針對瀏覽器客戶端,其他第三方客戶端...
閱讀 1055·2019-08-30 12:57
閱讀 2137·2019-08-30 11:11
閱讀 2183·2019-08-29 15:20
閱讀 1876·2019-08-29 14:12
閱讀 3279·2019-08-28 17:51
閱讀 2382·2019-08-26 13:23
閱讀 802·2019-08-26 10:34
閱讀 3863·2019-08-23 12:37