November 20th, 2016
Android Weekly Issue #232
本期內容包括: Kotlin的優點討論; MVVM模式結合RxJava和Retrofit的應用構架實現; Android中傳感器使用; 如何給App寫單元測試; Reductor的組合使用; Android應用進程被殺死的狀態恢復和問題處理; Kotlin中的Anko; 後臺任務處理庫"Android Job"; VectorDrawable和PNG的使用問題等.html
本期開源庫: 給ImageView和RelativeLayout的底部加曲線; 長按彈框; Switch Button控件; 給View加深度/厚度的庫.java
做者他們team想要徹底用kotlin開發一個應用.
本文是他們的心得體會.android
關於函數式編程的學習, 做者推薦: 一個Scala的課程.git
Kotlin的優點: 和Java能夠互相調用; 函數式語言; function purity; 高階函數(函數能夠做爲參數或返回值); 不可變性(val); Null-safety; Anko; Kotlin Android extensions(移除了ButterKnife); 還有對初學者很友好, 能夠擺脫不少第三方的依賴, 函數擴展等等優點.github
做者一年多之前寫過一個這個文章: RxJava: Android MVVM App structure with Retrofit, 介紹MVVM結合Retrofit和RxJava的App架構模式. 此篇文章是一年後做者對此的改進.編程
主要內容有:redux
.zip()
. 順序鏈接不一樣的網絡請求 -> .flatMap()
, .andThen()
.AsyncProcessor
.這篇文章鼓勵你分享你的知識, 經驗, 問題及解決方法, 不管是經過演講仍是寫出來的方式.c#
介紹了Android中傳感器的使用.網絡
如何給你的App寫簡單的單元測試.架構
這是系列文章中的一篇, 繼續講Reductor library – Redux的Android版實現.
這篇文章結合例子將如何組合使用以及用@CombinedState來生成代碼.
本文探討進程被殺死有可能致使的種種問題.
你的Android應用若是在paused或者stopped狀態, 那麼它任什麼時候候都有可能會被系統殺死. 這時候你的Activity, Fragment和View狀態將被保存, 當你回到應用的時候, 系統會從新啓動進程, 從新建立Activity, 存儲的狀態會在bundle中返回.
這個過程存在一個問題: 整個進程都被殺死了, 全部單例(或application scope的對象), 臨時數據, 還有retained Fragment中的數據, 這些全部都會處於一種全新建立的狀態, 但惟有一個不一樣, 一些在bundle中存儲的狀態被恢復出來了.
這樣有可能會致使一些異常, 好比你的界面想要恢復一種狀態, 可是數據已經被清空了.
如何測試這種狀況呢?
相關問題信號
onSaveInstanceState()
中保存可是你卻依賴的狀態這些問題沒有惟一的解決方案, 取決於你的應用.
做者把本身的一個佈局改成用Kotlin的Anko, 而後測試性能.
好處是:
做者用的測試性能的工具是: AndroidDevMetrics
在Android上的後臺工做, 你能夠選擇Alarm Manager
, Job Scheduler
或GCM Network Manager
.
爲了幫開發者從每種實現中抽象出來, Evernote開源了一個庫: Android Job. 本文介紹了這個庫如何使用.
做者他們的應用中有VectorDrawable的版本兼容問題, 用support library中的Compat版本也很差使, 因而他們在舊版本決定使用自動生成的png.
而後發現了生成png的顏色設置問題, 在舊版本生成的圖片用的是fillColor而不是tintColor. 把fillColor設置成想要的顏色便可.
一個應用, 展現了Depth-LIB-Android-的功能.
在ImageView
和RelativeLayout
底部加上曲線的庫.
長按出現彈框的庫.
一個Switch Button的庫, 帶有更多自定義擴展功能.
這個庫給View加上深度/厚度.