##新聞
1. [2016 年 Android 市場的 8 個大膽預測](http://www.oschina.net/news/69274/2016-android-market-predict)
據techrepublic報道,每年的年底,總是有很多評論者和預測者喜歡猜想來年的情況,為了秉承這種傳統,本文對2016年的Android市場提出了8個大膽預測。
##教程
1. [【譯】Android開發中的MVP架構](http://www.jianshu.com/p/7567ed0d1853)
最近越來越多的人開始談論架構。我周圍的同事和工程師也是如此。盡管我還不是特別深入理解MVP和DDD,但是我們的新項目還是決定通過MVP來構建。這篇文章是我通過研究和學習各種文章以及專題討論所總結出來的,它包括以下幾點:為什么越來越多的人開始關注架構?首先,MVP是什么?哪種架構才是最好的,MVC,MVVM還是MVP?MVP的利與弊
2. [Android的multidex帶來的性能問題-減慢app啟動速度](http://jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/1223/3796.html)
在安卓社區中,65k方法數的限制是一個被多次提及的問題。目前解決這個問題的辦法就是用multidex。雖然multidex是谷歌給出的一個非常棒的辦法,但是我發現了它對app啟動性能存在嚴重的影響,這點還沒有在社區引起重視。我這篇文章的就是為那些還沒有聽說過這個問題(但是想使用multidexing)的開發者以及那些使用了multidexing,但是想觀察本文解決辦法所能能贏得性能的伙伴而寫的。
3. [用黑客思維做測試——神器 Xposed 框架介紹](https://testerhome.com/topics/3819)
Xposed 框架是一款可以在不修改APK的情況下影響程序運行(修改系統)的框架服務,基于它可以制作出許多功能強大的模塊,且在功能不沖突的情況下同時運作。Zygote 進程是 Android 的核心,所有的應用程序進程以及系統服務進程都是由Zygote進程 fork 出來的。Xposed Framework 深入到了 Android 核心機制中,通過改造 Zygote 來實現一些很牛逼的功能。
4. [Java Functional Reactive 編程](https://realm.io/cn/news/droidcon-gomez-functional-reactive-programming/)
我們如何才能將傳統的變量式線程同步管理轉移到基于數據的異步流式編程上?試試 Reactive Programming 吧!這篇分享包含的主題有: reactive 擴展,observers ,以及 RxJava 的工作原理。盡管不容易上手,但是一旦上手,其樂無窮。
5. [構建更高質量的應用](http://t.cn/R4bY0Gn)
開發者的目標是打造用戶喜歡的應用。使用體驗更好的應用用戶就愿意投入更多錢,在 Google Play 商店獲得越高評分的應用會獲得更多下載。那么如何衡量應用的質量?從一種角度說,應用的質量涉及以下幾個方面:應用確實解決了用戶的需求;應用不僅設計美觀而且易于使用;應用穩定可靠、性能好、不浪費流量、不耗電等;應用有創新,使用了最新的 Android 特性;
6. [Android MVVM到底是啥?看完就明白了](http://t.cn/R44srdu)
什么是 MVVM ?我們一步步來,從 MVC 開始。MVC 我們都知道,模型——視圖——控制器。為了使得程序的各個部分分離降低耦合性,我們對代碼的結構進行了劃分。他們的通信方式也如上圖所示,即View層觸發操作通知到業務層完成邏輯處理,業務層完成業務邏輯之后通知Model層更新數據,數據更新完之后通知View層展現。
7. [Android Studio你不知道的調試技巧](http://tianweishu.com/2015/12/21/android-studio-debug-tips-you-may-not-know/)
寫代碼不可避免有Bug,通常情況下除了日志最直接的調試手段就是debug;那么你的調試技術停留在哪一階段呢?僅僅是下個斷點單步執行嗎?或者你知道 Evaluate Expression, 知道條件斷點;可是你聽說過日志斷點嗎,`Method Breakpoint`,?`Exception Breakpoint`?呢?還有高大上的 Field?`Watchpoint`??
8. [深入理解Android(二):Java虛擬機Dalvik](http://www.infoq.com/cn/articles/android-in-depth-dalvik)
這個選題很大,但并不是一開始就有這么高大上的追求。最初之時,只是源于對Xposed的好奇。Xposed幾乎是定制ROM的神器軟件技術架構或者說方法了。它到底是怎么實現呢?我本意就是想搞明白Xposed的實現原理,但隨著代碼研究的深入,我發現如果不了解虛擬機的實現,而僅簡單停留在Xposed的調用流程之上,那真是對Xposed最大的不敬了。
9. [Picasso學習筆記](http://blog.csdn.net/chdjj/article/details/49964901)
關于圖片加載庫的思考,我們為什么要用圖片庫呢? 圖片庫通常會對圖片加載邏輯進行封裝、優化,比如多級緩存/異步線程調度/圖片壓縮變換,有了這些特性,開發者不再需要關注內存占用、OOM、網絡請求等問題,而只需關注業務本身的邏輯,這對提高生產效率有很大幫助。
10. [Java并發包學習八]深度剖析
多線程環境下,使用Hashmap進行put操作會引起死循環,導致CPU利用率接近100%,所以在并發情況下不能使用HashMap。雖然已經有一個線程安全的HashTable,但是HashTable容器使用synchronized(他的get和put方法的實現代碼如下)來保證線程安全,在線程競爭激烈的情況下HashTable的效率非常低下。
11. [Android靜默安裝實現方案,仿360手機助手秒裝和智能安裝功能](http://blog.csdn.net/guolin_blog/article/details/47803149)
之前有很多朋友都問過我,在Android系統中怎樣才能實現靜默安裝呢?所謂的靜默安裝,就是不用彈出系統的安裝界面,在不影響用戶任何操作的情況下不知不覺地將程序裝好。雖說這種方式看上去不打攪用戶,但是卻存在著一個問題,因為Android系統會在安裝界面當中把程序所聲明的權限展示給用戶看,用戶來評估一下這些權限然后決定是否要安裝該程序,但如果使用了靜默安裝的方式,也就沒有地方讓用戶看權限了,相當于用戶被動接受了這些權限。
12. [極致的 Hybrid 混合式開發](http://yq.aliyun.com/articles/43)
目測性能是可觀的。盡管H5包的離線化隔絕了弱網對秒出的干擾,設備本地 IO 耗時也是不能忽視的,算上zip的解壓縮,僅在設備本地 IO 完全一個 HTML(包含其攜帶的資源文件)也會達到秒級的耗時,在iphone5上也會有0.5秒左右的白屏時間。
13. [Twitter的like動畫安卓版](http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/1224/3799.html)
不久前Twitter展示了具有現代感的心形動畫-作為star圖標的替代。雖然心形標志更普遍和昂貴,但是今天我們嘗試復制新的動畫,使用舊的星星圖標。雖然實現這個動畫最簡單的方法是使用 Frame Animation,但是我們嘗試用更靈活的方法來實現-手動繪制并用屬性動畫。這篇文章只是概要,沒有深入的技術細節。
14. [App孤島戰爭](http://t.cn/R4cxVuh)
上周Google上線了一個名為stream的功能,可以在搜索結果中直接將一個App呈現給用戶,即使你并沒有安裝過這個App,也能正常使用它。這聽起來確實很酷,目前Android L以上設備,Wifi環境下可用,且暫時只支持英語搜索結果,可以看看下面這個圖感受下。
15. [夜深人靜寫算法系列](http://www.cppblog.com/menjitianya/category/20893.html)
本系列包含:[搜索入門](http://www.cppblog.com/menjitianya/archive/2015/10/09/211980.html)、[動態規劃](http://www.cppblog.com/menjitianya/archive/2015/10/23/212084.html)、[樹狀數組](http://www.cppblog.com/menjitianya/archive/2015/11/02/212171.html)、[差分約束](http://www.cppblog.com/menjitianya/archive/2015/11/19/212292.html)、[初等數論](http://www.cppblog.com/menjitianya/archive/2015/12/02/212395.html)?和?[最近公共祖先](http://www.cppblog.com/menjitianya/archive/2015/12/10/212447.html)
##開源庫&項目
1. [HashTagHelper](https://github.com/Danylo2006/HashTagHelper)
一個可以幫助你高亮話題標簽("#example")以及捕獲點擊話題標簽事件的庫。
2. [SmallBang](https://github.com/hanks-zyh/SmallBang)
一個可以讓你給任何 View 添加 Twitter 心型按鈕動畫效果的庫。
3. [LikeAnimation](https://github.com/frogermcs/LikeAnimation)
Twitter 心型按鈕動畫效果。
4. [ToggleDrawable](https://github.com/renaudcerrato/ToggleDrawable)
一個可以讓你很容易的創建基于貝塞爾曲線的 Drawable 動畫的庫。
5. [FontDrawable](https://github.com/kazy1991/FontDrawable)
可以將 Icon-font 轉換為 Drawable 或者 Bitmap 的庫。
6. [easypermissions](https://github.com/googlesamples/easypermissions)
在系統權限邏輯的基礎上進行了包裝。
7. [java8-the-missing-tutorial](https://github.com/shekhargulati/java8-the-missing-tutorial)
不可錯過的 Java8 教程。
8. [app-theme-engine](https://github.com/afollestad/app-theme-engine)
一個簡單易用的 App 主題引擎。
9. [ZoomTextView](https://github.com/nomanr/ZoomTextView)
支持手勢縮放的自定義 TextView,控件本身和文字都會隨著手勢同時放大和縮小。
10. [HTextView](https://github.com/hanks-zyh/HTextView)
效果很贊的 TextView 的文本顯示動畫。
11. [Android-Plugin-Framework](https://github.com/limpoxe/Android-Plugin-Framework)
此項目是Android插件開發框架完整源碼及示例。用來通過動態加載的方式在宿主程序中運行插件APK。
##工具
1. [HackMyResume](https://github.com/hacksalot/HackMyResume)
一個可以幫你生成漂亮的以及多種文檔格式簡歷的工具。
2. [AndroidCodeQuality](https://github.com/MasonLiuChn/AndroidCodeQuality)
一個通過 checkstyle, pmd, findbugs等工具在你執行 "gradle assembleXX" 或者 構建你的 App 的時候幫你檢測代碼質量的項目。
3. [gradle-config](https://github.com/tmiyamon/gradle-config)
一個通過 yaml 格式文件幫你處理 variant 特定設置的 Gradle 插件。
##視頻
1. [Design Pattern在金融交易系統中的應用](http://www.infoq.com/cn/presentations/application-of-design-pattern-in-financial-trading-system)
證券交易系統,面臨的都是低延遲,高并發,事務性的操作。1\. 我們應用Event Sourcing、Leader Election模式,解決交易中間件的高可用問題(多活,零延時切換)。2\. 運用LMAX Disruptor解決服務內的高并發,低延遲消息傳遞。3\. 基于PGM組播實現的交易總線解決服務任意擴展的問題。
##技術之外
1. [如何招聘?](http://t.cn/R4VL8D8)
很多朋友來找我幫忙,說想要招人求推薦,我一般情況下都很為難。只有我和你熟識、了解你在做的事情、明白你的能力,才敢幫你簡單宣傳一下,至于靠譜的至交好友,我也定當竭力幫忙。但是,在現在的整個市場背景下,錢不是錢,程序員、設計師等技術人才因為不太正常的市場而在此特殊供需關系下價格飆升,再無人關注技術質量,因為招聘者本身并不尊重技術。
- 前言
- Android開發技術周報 Issue#90
- Android開發技術周報 Issue#89
- Android開發技術周報 Issue#88
- Android開發技術周報 Issue#87
- Android開發技術周報 Issue#86
- Android開發技術周報 Issue#85
- Android開發技術周報 Issue#84
- Android開發技術周報 Issue#83
- Android開發技術周報 Issue#82
- Android開發技術周報 Issue#81
- Android開發技術周報 Issue#80
- Android開發技術周報 Issue#79
- Android開發技術周報 Issue#78
- Android開發技術周報 Issue#77
- Android開發技術周報 Issue#76
- Android開發技術周報 Issue#75
- Android開發技術周報 Issue#74
- Android開發技術周報 Issue#73
- Android開發技術周報 Issue#72
- Android開發技術周報 Issue#71
- Android開發技術周報 Issue#70
- Android開發技術周報 Issue#69
- Android開發技術周報 Issue#68
- Android開發技術周報 Issue#67
- Android開發技術周報 Issue#66
- Android開發技術周報 Issue#65
- Android開發技術周報 Issue#64
- Android開發技術周報 Issue#63
- Android開發技術周報 Issue#62
- Android開發技術周報 Issue#61
- Android開發技術周報 Issue#60
- Android開發技術周報 Issue#59
- Android開發技術周報 Issue#58
- Android開發技術周報 Issue#57
- Android開發技術周報 Issue#56
- Android開發技術周報 Issue#55
- Android開發技術周報 Issue#54
- Android開發技術周報 Issue#53
- Android開發技術周報 Issue#52
- Android開發技術周報 Issue#51
- Android開發技術周報 Issue#50
- Android開發技術周報 Issue#49
- Android開發技術周報 Issue#48
- Android開發技術周報 Issue#47
- Android開發技術周報 Issue#46
- Android開發技術周報 Issue#45
- Android開發技術周報 Issue#44
- Android開發技術周報 Issue#43
- Android開發技術周報 Issue#42
- Android開發技術周報 Issue#41
- Android開發技術周報 Issue#40