November 6th, 2016
Android Weekly Issue #230.html
Android Weekly筆記, 本期內容包括: Mockito的擴展; ConstraintLayout的鏈式約束; Kotlin的Async-Await; RxJava2.0; 屏幕旋轉致使的Activity重建; Throwable類的設計問題; Espresso測試中如何等待異步請求返回; Kotlin的擴展和運算符重載; Android KeyStore實現用戶驗證.java
代碼部分有proguard的庫, mvp的庫和WifiManager, ConfigurationManager的包裝庫.android
這篇文章講了如何擴展Mockito, 簡化對參數的驗證.git
首先做者舉了以前驗證參數的例子, 用的是ArgumentCaptor, 寫起來很麻煩, 用了自定義的matcher以後簡化了不少.github
上一篇文章講過在ConstraintLayout中如何建立對稱的鏈式約束, 本篇文章介紹chainStyle的不一樣設置和比較.c#
默認的spread chain: 均勻分佈;
inside spread chain: 邊緣元素頂邊, 中間均勻分佈.安全
若是指定了權重, 將會按照權重佈局. 那麼spread chain和inside spread chain就沒有區別了.網絡
packed chain: 默認會把全部元素都放在一塊兒放在中間, 能夠指定bias來定義偏移基準, 默認bias是0.5, bias設置爲0.25的意思就是往左偏.app
Kotlin 1.1推出了coroutines, 這是一個讓計算能夠在某個點暫停而後以後又恢復的功能, 例子是幾年前C#的Async-Await.異步
做者先舉例說明了異步操做的幾種常見實現, 最後結合本身的庫用Async-Await作了一個例子.
RxJava2.0.0已經發布了. 這是它的wiki page來介紹2.0有什麼不一樣.
本篇文章講configuration變化(好比屏幕旋轉)致使的Activity重建.
爲何configuration變化的時候要重建Activity呢? 由於系統想要盡力地作一些helpful的事情, 但願在這種時候能從新加載正確的資源.
怎麼處理呢?
方法一: 讓系統自動處理. 在屏幕旋轉時, onSaveInstanceState()
會在Activity銷燬前調用, 能夠存儲一些狀態, 以後重建的時候從bundle中拿出來恢復.
方法二: 本身處理. 若是你想要獲取更多控制, 那麼你能夠在manifest中聲明configChanges
類型, 而後在Activity中覆寫onConfigurationChanged()
方法, 來本身作處理.
另外文章中還討論了網絡請求, 屏幕方向設置, retained fragment的使用等.
做者討論了他們在項目中遇到的一個問題.
他們用RxJavaHooks.enableAssemblyTracking();
來收集RxJava崩潰棧信息, 能夠顯示出究竟是哪個Observable崩了.
使用這個工具之後發現了一個問題, 進而研究了JDK的Throwable
類.
原來cause不存在(this)和cause未知(null)是兩種不一樣的狀況, 可是Throwable
的getCause()
方法都會返回null.
用Espresso作測試, 如何等待網絡請求結束再驗證UI.
結合Kotlin的extensions和operator overloading功能, 改善function, 讓代碼變得更優雅.
一個例子, 說明爲何老的驗證方法用戶體驗很差, 咱們如何在仍然考慮用戶安全的狀況下進行改善.
解決方案是用Android 6.0推出的Android Keystore.
做者展現瞭如何實現並提供了Demo.
Material Design app須要避免的8個點.
使用一行就能夠加上全部流行庫的proguard.
一個MVP的庫.
包裝了Android的WifiManager和ConnectivityManager的一個庫.
Droidcon NYC 2016 全部Droidcon NYC 2016的視頻資源.