December 25th, 2016
Android Weekly Issue #237
這是本年的最後一篇issue, 感謝你們.
本期內容包括: ConstraintLayout的使用; Android Things的應用; 如何利用第三方庫使得Java具備Kotlin的一些新特性; Firebase是如何利用ContentProvider
進行初始化的; Kotlin上的併發處理; 其餘還有一些關於程序架構, 代碼優化相關的討論.html
本文介紹ConstraintLayout
的chains和ratios. 另外還提到不少使用ConstraintLayout
的實現細節.java
所謂chains就是幾個View之間創建的雙向約束.android
ratios是幫助你設置View的寬高比, 它所作的事情和PercentFrameLayout差很少, 可是不用添加額外的ViewGroup.ios
用ObjectAnimator和Android Things搭建的一個電子蠟燭.git
ExoPlayer 2.1有什麼新功能.
這是他們的release notes.github
若是你由於種種緣由不能在項目中使用kotlin, 這篇文章告訴你如何藉助於一些工具和庫用Java實現Kotlin的一些features.編程
做者發佈了一個改變聲音的應用, 而且將其開源了: ChristmasVoice.架構
Firebase在Android上是如何初始化的?併發
不少SDK在初始化的時候會要求應用傳入Context
. Firebase簡化了這一步驟. 解決方案就是用了ContentProvider
, 既解決了時間問題, 也獲得了sdk須要的Context
. 而且不須要應用的開發者添加任何額外的初始化代碼.app
選擇ContentProvider
主要有兩點緣由:
ContentProvider
初始化早.在ContentProvider初始化的時候, 就能夠拿到Context了.
ContentProvider
能夠merge到最終的manifest裏.若是你也想選擇用ContentProvider
來作應用或庫的初始化, 請注意authority的惟一性問題和ContentProvider
只在主進程運行的問題.
當咱們在改善代碼可讀性的時候, 頗有可能會影響到性能和可維護性.
做者舉例說明了他在實際編程中遇到的幾個問題.
如何開發Android Things應用, 才能讓測試更加容易. 本文以一個很小的LED燈閃爍程序爲例.
Uber團隊從新打造了他們的ride app, 提出了一個新的構架模式: Riblets.
關於架構的選型, 已有的類型能夠查看這個iOS Architecture Patterns.
做者重構了本身應用的代碼, 應用了clean architecture, 本文講述了其過程.
Papercut是一個庫, 用來標記那些咱們以爲須要刪除或者須要重構的代碼.
做者最近看了一本書, 講Android的併發, 以爲很好, 想要用Kotlin來重寫書中的例子, 結果發現:
synchronized
關鍵字.volatile
關鍵字.Any
, 類比於Java中的Object
, 可是卻沒有wait()
, notify()
和notifyAll()
方法.因此Kotlin中的併發是怎麼處理呢? 這裏有個問題: Kotlin forum, Kotlin語言的開發人員表示這些應該由庫來處理, 而不是語言自己.
儘管Kotlin不支持, 可是它仍是提供了一些底層的併發工具.
@Synchronized
註解和synchronized()
方法.@Volatile
註解.wait()
, notify()
和notifyAll()
方法, 可是能夠把Object
對象做爲鎖, 而後調用鎖的這些方法.stackoverflow上有一個相關問題, 答案很不錯, 列了處理併發的一些有用的庫.
一個Screen Kata應用, 用來練習作UI測試的.
一個用來標記須要重構或者移除代碼的工具庫.
一個能夠自定義的對角線切割View.
一個動態的主題庫, 讓你能夠方便地修改應用的顏色.
包裝了JCA API和AndroidKeyStore API, 讓建立, 加密和管理任何Android API的keys變得更容易.