作為一個菜鳥今天湊熱鬧參加了GDD,還是挺有意思的,知道了一些新的東西,體驗(yàn)了Google好玩兒的產(chǎn)品。
今天我主要參加的是Android的分會場,當(dāng)我在會場親身體驗(yàn)的時候其實(shí)感覺也沒什么,會場間歇玩兒手機(jī)的時候,發(fā)現(xiàn)——額,GDD竟然是個這么大的新聞!
以下是我殘存的記憶能想到的內(nèi)容整理出來的,但是不全!有好多代碼沒記下來,等到官方keynote和視頻出來后,我再仔細(xì)學(xué)習(xí)下:
Session1: Android中的新增功能
這部分其實(shí)在早先時候的預(yù)覽版里已經(jīng)出現(xiàn)了,并且現(xiàn)在這部分的文檔已經(jīng)完全漢化:官網(wǎng)文檔。
Android增強(qiáng)的通知
- 對于實(shí)時通信應(yīng)用,可以直接在通知欄里對通知進(jìn)行恢復(fù)(這點(diǎn)國內(nèi)好多廠商在5.0的系統(tǒng)上都做到了。比如,錘子科技) 詳細(xì)參見官方文檔
快速設(shè)置
- “快速設(shè)置”就是直接從通知欄顯示關(guān)鍵設(shè)置,比如操作允許用戶在快速設(shè)置欄里添加用戶自定義的模塊(胡坤,這個主題的分享者說:在Android7.1.1上可以添加App),進(jìn)行快速啟動。(Android手機(jī)上下拉的通知欄里,添加用戶自定義的模塊,進(jìn)行快速啟動,這塊國內(nèi)好多廠商已經(jīng)做了)。詳見API:quicksettings
低電耗模式的改進(jìn)Doze:
- 在Android 6.0 上的低電耗模式,當(dāng)用戶設(shè)備未插接電源、處于靜止?fàn)顟B(tài)且屏幕關(guān)閉時,該模式會推遲 CPU 和網(wǎng)絡(luò)活動。在7.0上,通過在設(shè)備未插接電源且屏幕關(guān)閉狀態(tài)下、但不一定要處于靜止?fàn)顟B(tài)(例如用戶外出時把手持式設(shè)備裝在口袋里)時可以使用部分 CPU 和網(wǎng)絡(luò)限制,進(jìn)一步增強(qiáng)了低電耗模式。詳見官方文檔,對低電耗模式和應(yīng)用待機(jī)模式進(jìn)行針對性優(yōu)化
后臺優(yōu)化:Svelte項(xiàng)目
- Android 7.0 移除了三項(xiàng)隱式廣播(CONNECTIVITY_ACTION 、 ACTION_NEW_PICTURE 和 ACTION_NEW_VIDEO ),以幫助優(yōu)化內(nèi)存使用和電量消耗。之前版本的 Android 中,應(yīng)用可以注冊接收來自其他應(yīng)用(例如相機(jī))的隱式 ACTION_NEW_PICTURE 和 ACTION_NEW_VIDEO 廣播。當(dāng)用戶使用相機(jī)應(yīng)用拍攝照片時,這些應(yīng)用即會被喚醒以處理廣播。
為緩解這些問題7.0所帶來的優(yōu)化:
- 面向Android 7.0 開發(fā)的應(yīng)用不會收到 CONNECTIVITY_ACTION 廣播,即使它們已有清單條目來請求接受這些事件的通知。在前臺運(yùn)行的應(yīng)用如果使用 BroadcastReceiver 請求接收通知,則仍可以在主線程中偵聽 CONNECTIVITY_CHANGE
- 應(yīng)用無法發(fā)送或接收 ACTION_NEW_PICTURE 或 ACTION_NEW_VIDEO 廣播。此項(xiàng)優(yōu)化會影響所有應(yīng)用,而不僅僅是面向 Android 7.0 的應(yīng)用。
解決方案:
JobScheduler,詳見API文檔JobScheduler
應(yīng)用快捷方式
類似于iPhone上的3D Touch 和 魅族手機(jī)上的3D Press。詳見官方文檔App Shortcuts
Display Size
在android手機(jī)的設(shè)置里有個字體大小的設(shè)置,當(dāng)你把字體調(diào)整為超大號后,你會發(fā)現(xiàn)一種非常詭異的現(xiàn)象:字體的UI布局不會變,字變大了,顯得很詭異;7.0有個顯示大小Display Size,可以讓布局跟著你的字體大小來改變,不會顯得那么詭異。
存儲管理意圖
app現(xiàn)在可以發(fā)一個ACTION_MANAGE_STORAGE的intent,將用戶帶入系統(tǒng)的“釋放空間”界面。例如,如果一個App當(dāng)前沒有更多的空間可以使用了,它可以使用使用這個intent來讓用戶刪除不需要的App和內(nèi)容來釋放額外的存儲空間。
感想
Android7.0所帶來的變化,其實(shí)在國內(nèi)不少廠商已經(jīng)早早都實(shí)現(xiàn)了,這一點(diǎn)國內(nèi)的廠商還是走在前列的,為他們點(diǎn)個贊!
以上是Android會場的第一個分享,其實(shí)上面的分享文檔上都有,查看更詳細(xì)的文檔請移步:
Session2: Android開發(fā)工具中的新增功能
Constraint Layout
約束性布局,是一個新玩意兒,詳情移步:Build a Responsive UI with ConstraintLayout
layout-inspector 布局分析器:
比如你看到一個好玩兒的App覺著布局不錯,可以用來分析它的布局。官方文檔:Layout Inspector
FireBase
最新版的Android Studio集成了FireBase,今天又一個專門的分會場來講解FireBase。官網(wǎng):FireBase
Lint
- Lint可以直接在編輯代碼的時候就提示出:可能存在的缺陷;
- 之前在編譯完后會出現(xiàn)一大堆的警告??,現(xiàn)在可以將這些警告配置在一個單獨(dú)的文件里,在下一個編譯的時候,不在提示這些警告;
詳情異步,官方文檔:Improve Your Code with Lint
更快的instant run:
在Android Studio剛更新2.0的時候,我發(fā)現(xiàn)真的是巨慢,更新2.1后有所改善,據(jù)說instant run 變得更快了。當(dāng)時聽了個稀里糊涂,說是用到了:hot swap ; warm swap ; cold swap。還有兩個啥技術(shù)來著,等keynote ,官方視頻出來后,我在好好學(xué)習(xí)一下。
詳情移步,官方文檔:instant-run
apk減肥之:PNG to WebP
同樣的清晰度,WebP要比PNG減少很大的體積。
詳情參見:
- Webp 官方文檔:WebP
- apk 減肥(瘦身) 官方文檔: Reduce APK Size
以上是第二場分享,我能記住的東西,等keynote和視頻出來后,我再仔細(xì)學(xué)習(xí)一遍。
Session3: Android支持庫的新變化
- Fragments
Fragment生命周期的改善,F(xiàn)ragmentTransaction使用commitNow()函數(shù),替代commit的效果。
- NotificationManagerCompat
改善的通知,調(diào)用getImportance()方法可以顯示用戶指定的重要通知。
- 用來替換WebView的Custom Tabs:
前提設(shè)備上必須要有Chrome
- VectorDrawableCompat
- Night Mode
- ColorStateList
- BottomSheetDialogFragment
- AppBarLayout
- CollapsingToolbarLayout
- StateListAnimator
Support庫的東西挺多的,上面都是大會演講者分享的東西,大概記了一下。
詳情移步,官方文檔:support-library
Session4: Android Wear2.0的新變化
Android的穿戴設(shè)備,這個時間段有兩場Android的分享一場在Angular會場的"Android開發(fā)中的電量和內(nèi)存優(yōu)化",我去了Angular會場,等官方視頻出來了,我再學(xué)習(xí)下這個會場的分享
Session5 :“哎呀!我的Android應(yīng)用程序又崩潰了!”
設(shè)備兼容
不同廠商對于android的定制,會引起各種問題。不做兼容,也可能會造成app crash。
版本兼容
Android自身快速的迭代,本身各個版本之間的兼容性問題,也會造成App crash;
ProGuard
keep 防止資源誤刪除;
設(shè)備本身的功能
比如,在調(diào)用相機(jī)的時候,需要檢查當(dāng)前設(shè)備有相機(jī)。否則也會crash,問題來了,現(xiàn)在還有沒有相機(jī)的設(shè)備嗎?這可能是那位老師提到的——神奇的印尼市場吧!
調(diào)用設(shè)備功能的時候,要告訴App,我需要該設(shè)備<android: required = “true”>,并且檢查設(shè)備上是否有相應(yīng)的功能,such as: 相機(jī)、藍(lán)牙。
不要用非公開的API
Session6 :Android開發(fā)中的電量和內(nèi)存優(yōu)化
這部分內(nèi)容跟其他分享部分的內(nèi)容有重疊,提到了好幾個東西:Doze、App Standby、jobs、JobInfo。
電池優(yōu)化
Doze、App Standby 官方文檔:對低電耗模式和應(yīng)用待機(jī)模式進(jìn)行針對性優(yōu)化
內(nèi)存優(yōu)化
在低內(nèi)存的設(shè)備上,監(jiān)聽網(wǎng)絡(luò)狀態(tài)的變化,會引起明顯的內(nèi)存抖動,7.0去掉了CONNECTIVITY_CHANGE的廣播,替代解決方案:JobScheduler。
電池診斷:
Session7:Vulkan——專為Android打造的高性能3D圖形API
一個白頭發(fā)的大叔分享的,只能在Android 7.0上用,并且對硬件設(shè)備要求較高,估計(jì)是為了VR做準(zhǔn)備,想買新手機(jī)的要不再等等吧!
官方文檔:Vulkan Graphics API
總結(jié):
接下來重點(diǎn)學(xué)習(xí)一下: Constraint Layout 和 JobScheduler 看看這倆東西是怎么玩兒的!
參加這樣的大會,在會場內(nèi)我沒學(xué)到很多東西,但我知道了很多我不知道的東西,我記下了我不知道的,然后Google他們,然后學(xué)習(xí)他們??;
會后Google了一下,發(fā)現(xiàn)那些老師分享的東西其實(shí)在官網(wǎng)的文檔都有了,只不過是我不知道而已;
我一直很閉塞,走出來才發(fā)現(xiàn):喔噢,這么多開發(fā)者,好多有意思的事兒;
你看,跟著文檔走,然后“ it’s a good idea to get your hands dirty and try it for yourself”,那么你也是大神了;
最后,重要的一點(diǎn):午餐、晚餐——我吃的很爽,對于我這樣的Low B,有吃的,還不收費(fèi),當(dāng)然是放開吃啦!哈哈!