ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
### 教程 1. [ART虚拟机是如何内建支持MultiDex的?](http://androidx.top/?p=11) 项目的代码量越来越大,引入的jar越来越多,由于Dalvik虚拟机作者当初对Method量的短视,最终造成了Dex方法数超标的悲剧。Google为此提供了MultiDex这一补丁方案。MultiDex分为两部分,一部分是编译时需要的IDE插件,它负责将单个的classes.dex拆分成多个dex文件;而另一部分则是编译进classes.dex的运行时环境,它将classes2.dex, classes3.dex…在运行时加载进来,从而拼合成完整的字节码。 2. [老司机教你 “飙” EventBus 3](http://t.cn/Rq8m2tG) EventBus 对于 Android 开发老司机来说肯定不会陌生,它是一个基于观察者模式的事件发布/订阅框架,开发者可以通过极少的代码去实现多个模块之间的通信,而不需要以层层传递接口的形式去单独构建通信桥梁。从而降低因多重回调导致的模块间强耦合,同时避免产生大量内部类。它拥有使用方便,性能高,接入成本低和支持多线程的优点,实乃模块解耦、代码重构必备良药。 3. [那些年我们用过的显示性能指标](http://t.cn/Rq8mzWk) 从 Android 诞生的那一刻起,流畅度就为众人所关注。一时之间,似乎所有人都在讨论 Android 和 iOS 谁的流畅度更好。但是,毫不夸张的说,流畅度绝对是 Android 众多性能维度中最为奇葩的一个。因为,为了刻画这一性能维度,业界设计了各式各样的指标来对其进行衡量。可以说弄清了这些指标我们就明白了什么是流畅度,可是这似乎并不太容易。 4. [Android存储挖坑记](http://t.cn/RqQlAm7) 最近在搞Android存储相关的业务,什么Internal/External/Primary/Secondary搞得我都看懵了,国内也没什么好的文章系统的讲这个,我就挖挖各类资料,整理一下。对于Internal Storage 与 External Storage,官方文档上有这么一段话,描述得很详细了,我翻译了一段下来:所有的Android设备都有两块存储区域:Internal Storage和External Storage。它们的名称来源于早期的Android系统,那时候大家的手机都内置(Permanent)一块较小存储板(即Internal Storage),并配上一个的外置的(Removable)储存卡(即External Storage)。 5. [如何优雅的设计java异常](http://lrwinx.github.io/2016/04/28/%E5%A6%82%E4%BD%95%E4%BC%98%E9%9B%85%E7%9A%84%E8%AE%BE%E8%AE%A1java%E5%BC%82%E5%B8%B8/) 异常处理是程序开发中必不可少操作之一,但如何正确优雅的对异常进行处理确是一门学问,笔者根据自己的开发经验来谈一谈我是如何对异常进行处理的。由于本文只作一些经验之谈,不涉及到基础知识部分,如果读者对异常的概念还很模糊,请先查看基础知识。 6. [第三方库和SDK中隐藏的性能问题](http://blog.nimbledroid.com/2016/04/25/problems-with-libraries-and-sdks-zh.html) 很难想象现在的 APP 不会使用任何第三方库或者 SDK,毕竟大部分 APP 都会需要进行网络图片加载、闪退追踪、广告或者用户行为分析。这是很有意义的,开发者不应该在每次开发 APP 时都重复造轮子。然而很多第三方库和 SDK 都会导致 APP 启动变慢以及一些其他的性能问题。而这些性能问题通常都很难追踪分析,因为大部分开发者都对第三方库和 SDK 的实现细节了解很少,甚至完全没有了解。 7. [突破App启动时间的极限](http://blog.nimbledroid.com/2016/04/20/pushing-limits-of-app-startup-time-zh.html) 开发一个高性能的小规模 APP 很简单,一旦涉及到数据缓存、JSON 解析、不可变对象、依赖注入以及一系列安卓 support 库时,保持 APP 的高性能就变得很有挑战性了。 幸运的是保持 APP 的高性能依然是有可能的,即便我们使用了 RxJava 进行响应式编程,不可变数据对象, Guava 集合,Optional,以及用 Dagger 进行依赖注入。 ### 开源库&项目 1. [Flexbox-layout](https://github.com/google/flexbox-layout) FlexboxLayout is a library project which brings the similar capabilities of [CSS Flexible Box Layout Module](https://www.w3.org/TR/css-flexbox-1) to Android. 2. [navi](https://github.com/trello/navi)  Adds listening capabilities to Activities and Fragments 3. [easydeviceinfo](https://github.com/nisrulz/easydeviceinfo)  一个可以很方便的获取一系列设备信息的库 4. [AdvancedRecyclerView](https://github.com/StephenVinouze/AdvancedRecyclerView) 用 Kotlin 实现的支持 Single choice、Multiple choice 和 Sections 的 RecyclerView 5. [android-widget-fanmenu](https://github.com/BCGDV-ASIA/android-widget-fanmenu) 风扇效果的菜单 6. [Tesela](https://github.com/raycoarana/tesela) Tesela simplifies dealing with background threads and UI work in Model-View-Presenter 7. [MaryPopup](https://github.com/Meetic/MaryPopup) 可以给View添加展开和关闭动画效果的库 8. [Shuffle](https://github.com/Meetic/Shuffle) An easy to use swiping-view for Android 9. [GithubWidget](https://github.com/Nightonke/GithubWidget) 轻量级显示Github用户的贡献、星数、Follower数、热门仓库的App 10. [Android-Coverflow](https://github.com/crosswall/Android-Coverflow) 基于 ViewPager 实现的 cover flow 效果 11. [QuickSand](https://github.com/blundell/QuickSand) Automatically manipulates the duration of animations dependent on view count 12. [MusicBobber](https://github.com/Cleveroad/MusicBobber) Awesome Audio Widget for any Android Music App 13. [EasySplashScreen](https://github.com/pantrif/EasySplashScreen) Easily create your company splash screen ### 技术之外 1. [如何教会非计算机专业的女友写代码](http://lifeofzjs.com/blog/2016/05/01/how-to-teach-gl-write-code/) > 版权声明:欢迎自由转载-非商用-非衍生-保持署名 | [Creative Commons BY-NC-ND 3.0](http://creativecommons.org/licenses/by-nc-nd/3.0/deed.zh3)