##新聞
1. [Android 7.0發布時間曝光 預計今年夏季推出](http://tech.sina.com.cn/t/2016-03-13/doc-ifxqhmvc2381506.shtml)
最近在手機操作系統方面的焦點自然就是iOS9.3正式版系統將與本月21日正式推送,諸多的新功能的加入以及修善多種致命BUG讓人越發是期待不已,而另一邊安卓陣營也是絲毫沒有休著,因為Android 7.0也接連曝光了。
##教程
1. [App架構之組件化理解](http://wangxinghe.me/blog/2016-03-20/architecture-componentization/)
項目發展到一定階段,隨著需求的增加以及需求的頻繁變更,項目會越來越大,耦合會越來越多,開發效率也會降低,這個時候需要做的就是進行模塊拆分,官方的說法就是組件化。
2. [這可能是目前最詳細的安卓task, launchMode, intent flag測試分析與總結了](http://blog.piasy.com/2016/03/19/Android-Task-And-Back-Stack/)
task是一個從用戶角度出發的概念,它是一些activity的組合,它們組合起來是為了讓用戶完成某一件工作(或者說操作)。task內的activity們以棧的形式組織起來,也就是back stack了。棧內的activity不會重新排序,只能push或者pop。棧內的activity可以來自不同的app,因此可以是運行在不同的進程,但是它們都屬于同一個task內。
3. [android:process 的坑,你懂嗎?](http://www.rogerblog.cn/2016/03/17/android-proess/)
許多知識知其然而不知其所以然,這也許就是大神與菜鳥的區別吧。最近排查問題時發現一個問題: 一個在 Application 中啟動的定時任務在運行時會被調用多次,詭異的很,最后發現是一個前人留下的坑,原因就是對 android:process 不知其所以然造成的。
4. [你應該知道的那些Android小經驗](http://t.cn/RGe7SEb)
做Android久了,就會踩很多坑,被坑的多了就有經驗了,閑暇之余整理了部分,現挑選一些重要或者偏門的“小”經驗做個記錄。
5. [Roboletric探索之路,從抗拒到依賴](http://iceanson.github.io/Robolectric-%E6%8E%A2%E7%B4%A2%E4%B9%8B%E8%B7%AF)?(By iceAnson)
大勢所趨,bug量的增多不得不讓我們提高代碼的質量,不是我們完不成功能,只是我們驗證功能的成本實在太高,隨著工程的復雜度的增加,run一次模擬器或者真機,在window上的花費至少是一分鐘以上,甚至三四分鐘,所以有些人偷懶,包括我,有時候把那些看上去“沒有問題的代碼”提交到了主干上,隨之產生了bug,然后進入修復bug-》run-》修復bug->run;花費了更多的時間和資源;
6. [Android 內存泄漏案例和解析](https://drakeet.me/android-leaks)
Android 編程所使用的 Java 是一門使用垃圾收集器(GC, garbage collection)來自動管理內存的語言,它使得我們不再需要手動調用代碼來進行內存回收。那么它是如何判斷的呢?簡單說,如果一個對象,從它的根節點開始不可達的話,那么這個對象就是沒有引用的了,是會被垃圾收集器回收的,其中,所謂的 “根節點” 往往是一個線程,比如主線程。
7. [Android APP 快速 Pad 化實現](http://t.cn/RGrdQGJ)
如何能在最快的時間內,實現一個最新版本 Android app 的 pad 化呢?從拿到一個大型手機 app 代碼開始開發到第一個其全新 pad 版本的發布,我們用了不到3個月時間給出了一份滿意的答案。采用最新版本手機 APP(之后稱為 MyApp)代碼,實現其 Pad 化,為平板和大屏手機用戶提供更好的體驗。為實現 MyApp 的 Pad 化工作,需要我們首先來了解一下 MyApp 項目經典頁面的構成以及 Pad 化后的頁面結構的變化。
8. [Butter Knife 源碼解析](http://t.cn/RGgLjwY)
Java 5帶有Annotation Processing Tool(APT)。它能夠提供一個編譯時的注解處理,并且能夠產生新的代碼與文件,同時能夠讓java編譯器將生成的代碼和原來的代碼一起編譯!與之配套的還有Mirror API,它提供在編譯時對程序結構的靜態、只讀的分析。這個功能很強大,但是處理起來略顯麻煩。Java 6開始將這個功能整合進編譯器中,你只要繼承AbstractProcessor,并在javac中通過參數-processor指定注解處理就好了。
9. [RxJava 與 Retrofit 結合的最佳實踐](http://gank.io/post/56e80c2c677659311bed9841)
RxJava和Retrofit也火了一段時間了,不過最近一直在學習ReactNative和Node相關的姿勢,一直沒有時間研究這些新東西,最近有個項目準備寫,打算先用Android寫一個Demo出來,卻發現Android的世界發生了天翻地覆的變化,EventBus和OKHttp啥的都不見了,RxJava和Retrofit是什么鬼?
10. [Java 8 特性 – 終極手冊](http://ifeve.com/java-8-features-tutorial/)
毫無疑問,Java 8是自Java 5(2004年)發布以來Java語言最大的一次版本升級,Java 8帶來了很多的新特性,比如編譯器、類庫、開發工具和JVM(Java虛擬機)。在這篇教程中我們將會學習這些新特性,并通過真實例子演示說明它們適用的場景。
11. [不要寫死!天貓App的動態化配置中心實踐](http://t.cn/RGBw2VT)
最初移動App就是一個老老實實的App,一切都硬編碼在客戶端,只有業務數據是從API而來。漸漸的就會發現,這里的Tab文案需要動態調整,那里的文本顏色需要個性定制。于是我們就在數據接口里加上一些信息來控制客戶端邏輯。當動態調整發揮作用,我們就發現這玩意兒簡直太棒了,客戶端邏輯居然也不需要版本依賴了!于是更多的邏輯開始未雨綢繆,開始在各自數據接口里預先埋下控制信息。
12. [Android Bound Service攻擊](http://drops.wooyun.org/mobile/13676)
去年12月,【1】 講述了針對android bound service的攻擊方法,給出了從apk包中恢復AIDL文件的工具,利用AIDL便可以編寫攻擊Bound Service的Client。拜這篇文章所賜,筆者也在實際測試工作中發現了類似漏洞,其中的過程卻有些曲折。作為白帽子,通常情況下很難直接得到或者恢復AIDL文件,這決定了Bound Service的易守難攻,因此需要更加系統地掌握Bound Sercive的測試方法,并輔以耐心和一定的運氣,才能發現類似的漏洞。
13. [Retrofit 2.0 + OkHttp 3.0 配置](https://drakeet.me/retrofit-2-0-okhttp-3-0-config)
Retrofit 和 OkHttp 都是偉大的 Square 公司開源的偉大項目。我從 2014 年便在同事 ionull 的推薦帶領下,使用這個網絡庫組合以及 RxJava,真是極大改善 Android 開發體驗的好東西。前段時間也是從 Retrofit 1.9 升級到 2.0 beta 4 版本,從 OkHttp 2.+ 版本升級到 3.0.1 版本。
14. [JVM內幕:Java虛擬機詳解](http://t.cn/RGBArdo)
線程,這里所說的線程指程序執行過程中的一個線程實體。JVM 允許一個應用并發執行多個線程。Hotspot JVM 中的 Java 線程與原生操作系統線程有直接的映射關系。當線程本地存儲、緩沖區分配、同步對象、棧、程序計數器等準備好以后,就會創建一個操作系統原生線程。Java 線程結束,原生線程隨之被回收。
15. [從零開始的Android新項目2 - Gradle篇](http://blog.zhaiyifan.cn/2016/03/14/android-new-project-from-0-p2/)
相信大家的項目用上gradle都已經很久了,但用得如何呢?這里分享一下我的gradle腳本,大部分都是去年6月左右就開始用上的,有一部分比如簽名的安全保存則是最近才自己動手,做了令自己覺得還不錯的方案。
16. [從零開始的Android新項目1 - 架構搭建篇](http://blog.zhaiyifan.cn/2016/03/14/android-new-project-from-0-p1/)
domain為純領域模型,是Java library,包含了use case(Interactor)、DO、repository接口等domain package,目標是在任何Java語言的平臺上都能直接使用,所以必須是平臺無關,對平臺沒有任何依賴,能使用Java的方法(JUnit + Mockito)來直接進行測試。
17. [Kotlin 語言高級安卓開發入門](https://realm.io/cn/news/oredev-jake-wharton-kotlin-advancing-android-dev/)
過去一年,使用 Kotlin 來為安卓開發的人越來越多。即使那些現在還沒有使用這個語言的開發者,也會對這個語言的精髓產生共鳴,它給現在 Java 開發增加了簡單并且強大的范式。Jake Wharton 在他的 ?redev 的討論中,提到了 Kotlin 是如何通過提升安卓開發的語言特性和設計模式來解決這些嚴重的問題,通過這些方法你可以清除那些無用的 API 還有無效代碼。充分利用擴展特性來解決你的開發中的模板性代碼的問題!
18. [依賴注入框架性能對比](http://blog.nimbledroid.com/2016/03/07/performance-of-dependency-injection-libraries-zh.html)
依賴注入(DI)技術在安卓開發領域已經非常流行了。DI可以減少重復代碼的編寫,更便于調試和測試,使得開發出優秀的APP更加簡單。盡管各種DI框架看著都非常強大,但也需要非常注意它們對APP性能帶來的開銷。本文中我們對比了三個最流行的DI框架,來幫助開發者了解它們各自的優劣。
19. [通過Loader延長Presenter生命周期](http://blog.chengdazhi.com/index.php/131)?(By Dominic)
MVP架構背后的核心思想就是將Activity/Fragment變成一個單純的View,負責展示數據并將各種事件分發給中間人,也就是Presenter。Presenter會處理每一個事件,從Model層獲取或上傳數據,并將獲得的數據進行處理并讓View層展示。Presenter與View(這里是Activity/Fragment)的通信,是通過Activity/Fragment所繼承的View接口來間接完成的。
20. [Android設置中“強行停止”詳解](http://www.rogerblog.cn/2016/03/05/sourcecode-about-broadcast-receiver-stopstate/)
從 Android 3.1 開始,系統為所有的廣播都默認添加了FLAG*EXCLUDE*STOPPED*PACKAGES 標志。所有處于停止狀態的應用將無法接受到該標志的廣播。注意,只有兩種情況下應用才會處于停止狀態:1.應用安裝后未運行 2.應用被手動(設置-應用-強制停止)或者其他應用強制停止了,如果需要啟動處于停止狀態的應用,則只要為Intent添加 FLAG*INCLUDE*STOPPED*PACKAGES 標記即可。
##開源庫&項目
1. [Ahbottomnavigation](https://github.com/aurelhubert/ahbottomnavigation)
最新 Material Design 設計規范中 Bottom Navigation 的第三方實現
2. [BottomBar](https://github.com/roughike/BottomBar)
最新 Material Design 設計規范中 Bottom Navigation 的第三方實現
3. [SpringHeader](https://github.com/loopeer/SpringHeader)
使用 CoordinatorLayout 實現的彈簧效應的 Header View
4. [IndexRecyclerView](https://github.com/jiang111/IndexRecyclerView)
一個通過RecyclerView實現的聯系人
5. [Passwordview](https://github.com/lisawray/passwordview)
Material Design 的密碼輸入框控件
6. [Emoji](https://github.com/vanniktech/Emoji)
一個可以讓你很方便在應用中集成 Emoji 表情的庫
7. [awesome-android-tips](https://github.com/jiang111/awesome-android-tips)
各種開發中實用的 Tips
8. [react-native-image-picker](https://github.com/marcshilling/react-native-image-picker)
React Native 的圖片選擇控件
9. [awesome](https://github.com/sindresorhus/awesome)
一個各種 awesome 庫的索引庫
10. [ExpandablePager](https://github.com/Telenav/ExpandablePager)?
可以在 expanded 和 collapsed 兩個狀態之間切換的 ViewPager,并且可以 slide vertically
11. [NodeFlow](https://github.com/Telenav/NodeFlow)
可以讓你很容易實現分層可視化內容的庫
12. [ReLinker](https://github.com/KeepSafe/ReLinker)
一個可以替換 JDK 里的?`System.loadLibrary`?的庫
13. [PoiShuhui-Kotlin](https://github.com/wuapnjie/PoiShuhui-Kotlin)
一個用Kotlin寫的簡單漫畫APP
##工具
1. [API Blueprint](http://www.jianshu.com/p/d39c3553e25a)
是一套基于 markdown 的 API 描述語言規范
2. [ProperDroid](https://github.com/JcMinarro/ProperDroid)
一個 Gradle 插件,可以讓你用一種簡單的方式給你的 Projece 配置 variant
3. [GifHub](https://github.com/DrewML/GifHub)
一個往 GitHub 評論里邊插入 Gif 動畫的 Chrome 插件
##視頻
1. [Look Up](http://video.sina.com.cn/p/tech/t/v/2014-06-05/172863999249.html)
英國藝術工作者蓋瑞科德今年4月在網絡上載了一部題為《抬起頭來》(Look Up)的自創短片,從中呼吁低頭族關掉手機,放下生活中的干擾。截至目前為止,這部短片已經累積高達2千萬的瀏覽量。
- 前言
- 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