🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
##新闻 1. [谷歌做了一个艰难的决定:安卓系统不再用甲骨文的私有 Java API 了](http://top.jobbole.com/32243/) 12月 29 日有人在 Hacker News 上爆料,安卓代码库中出现了神秘的代码提交(commit),修改了 8902 个文件,大家开始猜测,谷歌这是要用 OpenJDK 换掉 Android 系统中在用的 Java API。至于为什么会有这个决定,建议看看伯乐在线的这篇文章[《(甲骨文)紧咬 9 行代码,索赔超 10 亿美元》](http://blog.jobbole.com/95154/)。 ##教程 1. [深入理解Android(三):Xposed详解](http://www.infoq.com/cn/articles/android-in-depth-xposed) Xposed,大名鼎鼎得Xposed,是Android平台上最负盛名的一个框架。在这个框架下,我们可以加载很多插件App,这些插件App可以直接或间接操纵系统层面的东西,比如操纵一些本来只对系统厂商才open的功能(实际上是因为Android系统很多API是不公开的,而第三方APP又没有权限)。有了Xposed后,理论上我们的插件APP可以hook到系统任意一个Java进程(zygote,systemserver,systemui好不啦!)。 2. [Android 中如何计算 App 的启动时间?](http://androidperformance.com/2015/12/31/How-to-calculation-android-app-lunch-time.html) 事实上 Android 中一个 App 的启动时间可以准确计算的.但是要分场景.也就是说要分开游戏和应用. 大家都知道,在Android中,游戏开发和应用开发是两码事.所以我们需要分开来说.我们平时在写应用的时候,一般会指定一个 mainActivity ,用户在桌面上点击这个 Activity 的时候,系统会直接起这个 Activity. 我们知道 Activity 在启动的时候会走 onCreate/onStart/onResume .这几个回调函数. 3. [Android夜间模式最佳实践](http://t.cn/R4XLtrv) 如何优雅地实现夜间模式?在Android应用普遍支持夜间模式的今天,本文作者马俊同学,分析了业界主流的方案, 同时也通过自己的研究,发现了一个维护成本相对较小的方案,让我们一起看看。由于Android的设置中并没有夜间模式的选项,对于喜欢睡前玩手机的用户,只能简单的调节手机屏幕亮度来改善体验。目前越来越多的应用开始把夜间模式加到自家应用中,没准不久google也会把这项功能添加到Android系统中吧。 4. [微信Android客户端架构演进之路](http://www.infoq.com/cn/articles/wechat-android-app-architecture) 去年7月,笔者在InfoQ举办的ArchSummit深圳2014的架构师峰会上,分享了微信Android客户端的架构演进史。可以说,这是一个典型的Android应用在从小到大的成长过程中的“踩坑”与“填坑”的历史。互联网的变化速度如此之快,1年的时间里,可以发生翻天覆地的变化。今天在这里,重新和大家回顾微信客户端架构的演进过程,以及其背后的开发团队、流程的变化与思考。 5. [途牛Android App的插件实现](http://t.cn/R4M92AA) Android插件化进行得如火如荼,各大名企相继开源其开发框架。不得不说,无数的技术大牛让我们敬仰。途牛的APP插件化到目前发布了多个版本,已经相对稳定,这里就叙述下途牛的APP插件化。途牛的插件化是基于dynamic-load-apk(github)实现的。定义了宿主和插件的通信方式,使得两者能够互起对方的页面,调用彼此的功能。 6. [给创业码农的话--如何提升开发效率](http://t.cn/R4MKXPI) 为了App不卡顿,我们会把所有耗时的操作(比如:网络访问、文件访问)放到Worker Thread中。但是Android本身的AsyncTask的设计个人觉得设计的十分糟糕,不但写出来的代码冗长,而且稍微复杂一些的多流操作就会写的完全无法维护(这里可以用Java本身的线程模式来实现)。而且肆意的开线程也会造成App的卡顿。这里本身最初的想法就是需要一个线程池,以Promise的方式对外提供接口。 7. [Android应用启动优化:一种DelayLoad的实现和原理(下篇)](http://androidperformance.com/2015/12/29/Android%E5%BA%94%E7%94%A8%E5%90%AF%E5%8A%A8%E4%BC%98%E5%8C%96-%E4%B8%80%E7%A7%8DDelayLoad%E7%9A%84%E5%AE%9E%E7%8E%B0%E5%92%8C%E5%8E%9F%E7%90%86-%E4%B8%8B%E7%AF%87.html) [上一篇文章](http://www.androidperformance.com/2015/11/18/Android-app-lunch-optimize-delay-load.html)我们使用第三种方法来实现延迟加载。不过上一篇写的比较简单,只是讲解了如何去实现,这一篇就来讲一下为何要这么做,以及这么做后面的原理。其中会涉及到一些 Android 中的比较重要的类,以及 Activity 生命周期中比较重要的几个函数。其实这个其中的原理比较简单,不过要弄清楚其实现的过程,还是一件蛮好玩的事情,其中会用到一些工具,自己加调试代码等,一步一步下来,自己对 Activity 的启动的理解又深了一层,希望大家读完之后也会对大家有一定的帮助。 8. [Android 各种Span](http://blog.csdn.net/qq_16430735/article/details/50427978) 在 `android.text.style` 包下,有一些 Span 类,可以提供我们完成一些在 TextView 中的特殊内容。(比如:部分内容颜色、字体、大小不同等等,更有部分字体可点击。)还有一个SpannableStringBuilder,可以帮助我们设置 Span。 9. [关于网络延时的一次深度研究](http://t.cn/R4fYQ1L) 前几天群里的朋友突然都关心起网络延时的问题来,一方面大概是因为现在许多的应用都逐渐变得对延时更加敏感,另一方面大概也因为许多网络厂商的各种低延迟的宣传让大家心生疑惑:到底我们需要多少的网络延时而实际网络又能提供多少的延时性能。 10. [如何选择正确的HTTP状态码?](http://t.cn/R4fYuos) 众所周知,每一个HTTP响应都会带有一个状态码,不过对于很多开发者来说,平时使用最多的几个状态码无外乎就是200、400、404、500等。那其他众多状态码该应用在何种场景中,什么时候应该使用哪些状态码就成为一个值得我们深入思考的问题了。即便在Facebook这样的公司中,那些聪明的开发者所构建的API也可能只返回200。 11. [前谷歌首席 Java 架构师谈如何设优秀的 API](http://www.csdn.net/article/2014-02-18/2818441-How-to-design-a-good-API#rd) 随着大数据、公共平台等互联网技术的日益成熟,API接口的重要性日益凸显,从公司的角度来看,API可以算作是公司一笔巨大的资产,公共API可以捕获用户、为公司做出许多贡献。对于个人来说,只要你编程,你就是一个API设计者,因为好的代码即是模块——每个模块便是一个API,而好的模块会被多次使用。此外,编写API还有利于开发者提高代码质量,提高自身的编码水平。 ## 开源库&项目 1. [OnActivityResult](https://github.com/vanniktech/OnActivityResult) 一个可以通过注解来处理 OnActivityResult 方法的不同情况的库。 2. [AndroidEspressoIdlingResourcePlayground](https://github.com/FutureProcessing/AndroidEspressoIdlingResourcePlayground) 一个用 Espresso 2 和 Dagger 2 做 Android Testing 的练习实践项目。 3. [Vineyard](https://github.com/hitherejoe/Vineyard) 一个 Vine 的非官方 Android TV 客户端应用。 4. [DragScaleCircleView](https://github.com/hpfs0/DragScaleCircleView) 一个可拖动可缩放大小的自定义View。 5. [MathView](https://github.com/kexanie/MathView) 一个可以在你的 App 里显示数学公式的库。 6. [FileDownloader](https://github.com/lingochamp/FileDownloader) Android 文件下载引擎,稳定、高效、简单易用。 ##工具 1. [DebugDrawer](https://github.com/palaima/DebugDrawer) Android Debug Drawer for faster development。 2. [ADB Shell](http://adbshell.com/) 一个 ADB 命令详解网站。 ## 视频 1. [手机淘宝的客户端架构探索之路](http://www.infoq.com/cn/presentations/taobao-mobile-client-architecture-road) 手机淘宝是阿里集团在移动互联网战场的重要布局,不同于支付宝的强工具性和来往的重IM化,手机淘宝体现的是一个高度多样化的生态,它承载了大淘宝业务群之中几乎所有的业务形态。客户端底层架构如何支撑如此灵活多样的业务,并顺利接入整个集团10多个不同团队开发的客户端代码,无缝集成在同一个App内,还能确保这个App的质量和性能,对手机淘宝的客户端底层架 ##设计 1. [非科班出身的知名Facebook产品设计师教你初识产品设计!](http://t.cn/R4XJy4X) 产品设计到底是什么?怎么来设计一个产品?Stephanie Engle,大学读的是公共政策专业却在Facebook做产品设计,看看一个非科班出身的人对于产品设计的理解。内含一个CASE STUDY :) ##技术之外 1. [如何设计你的2016年年度计划](http://t.cn/R4JZORI) 这两年,我一直非常感恩,也特别幸运的是2015年我的身体能够好起来,能够有机会回到我最热爱的工作中,所以从年初在医生的许可下,逐渐恢复工作开始,一方面告诉自己一定要把工作做好,一方面也时时提醒自己要保持好的心态,照顾好自己的身体、家人的健康。 2. [我的销售概念与方法论](http://t.cn/R4XJ6g1) 大学毕业之后,会计专业的我去做了销售,为什么呢?因为我真没学会会计这个专业(你看,肯定也有我学不会的事情)…… 另外一个原因是,销售是个没有门槛的工种,尤其是“一线推销”这种工作,只要你肯干就行。别看卖东西这事儿其实谁都能做,卖得好就和做得好任何事情一样,做到顶尖的人少之又少。刚开始的时候,我怎么能想象销售竟然会成为我一生的专长,甚至专业呢?压根就没有想过。