🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
### 新闻 1. [谷歌推出Google Maps Testing Program测试预览计划](http://www.cnbeta.com/articles/507667.htm) 2. [谷歌意欲重返中国 不看好联想模式](http://www.cnbeta.com/articles/507241.htm) 3. [Google能帮你追踪丢失的iPhone和Android设备](http://www.cnbeta.com/articles/506961.htm) 4. [Google Home:不基于Android 而是"精心打扮"的Chromecast](http://www.cnbeta.com/articles/506919.htm) ### 教程 1. [应用首页Activity的单例实现](http://t.cn/R5GfSrj) 目前有一部分android APP需要这样一种场景,即应用需要保留一个应用首页主Activity,其它子Activity永远在主Activity之上,跳转到子Activity之后,不管以哪种方式跳转,最终都可以返回到主Activity,这种场景有点类似主桌面的概念。这种场景如果纯fragment来实现,需要管理fragment栈,中间如果发生嵌套跳转,fragment栈的管理会变得非常复杂,所以难免会需要使用部分Activity来实现,并且由于主Activity承载的内容比较丰富,初始化会比较耗时,因此要尽量复用已初始化的Activity。 2. [打通Android Gradle编译过程的任督二脉](http://t.cn/R5GfCsg) 本文主要是基于自己在工作当中的一些Android Gradle实践经验,对gradle相关知识做的一个简单总结和分享,希望对大家有帮助。首先会讲Gradle大概的工作流程和实现原理,并以部分源码分析佐证。其中包括project中配置数据什么时候取,各个task的创建时机,如何自定义控制编译过程等。然后着重会分析编译过程中class到dex这一步的具体过程,以及当初遇到的一些问题和解决方法。 3. [Google官方MVP+Dagger2架构详解](http://www.jianshu.com/p/01d3c014b0b1) 安卓应用在初始化对象的时候经常需要处理各种依赖关系。比如说网络访问中使用Retrofit,Gson,本地存储中使用shared preference。无一例外,我们都都需要在使用它们的地方进行实例对象构建,而且其中还可能存在着各种各样的继承依赖关系。依赖注入(Dependency Injection,简称DI)是用于削减计算机程序的耦合问题的一个法则。对象在被创建的时候,由一个调控系统内所有对象的外界实体将其所依赖的对象的引用传递给它。也可以说,依赖被注入到对象中。 4. [深入浅出 Retrofit,这么牛逼的框架你们还不来看看?](http://t.cn/R5bXmEH) Android 开发中,从原生的 HttpUrlConnection 到经典的 Apache 的 HttpClient,再到对前面这些网络基础框架的封装,比如 Volley、Async Http Client,Http 相关开源框架的选择还是很多的,其中由著名的 Square 公司开源的 Retrofit 更是以其简易的接口配置、强大的扩展支持、优雅的代码结构受到大家的追捧。也正是由于 Square 家的框架一如既往的简洁优雅,所以我一直在想,Square 公司是不是只招处女座的程序员? 5. [开发第三方库最佳实践](http://www.jianshu.com/p/0aacd419cb7e) 本文会不定期更新,推荐watch下项目。如果喜欢请star,如果觉得有纰漏请提交issue,如果你有更好的点子可以提交pull request。本文的示例代码主要是基于作者的经验来编写的,若你有其他的技巧和方法可以参与进来一起完善这篇文章。 6. [Android中apk加固完善篇之内存加载dex方案实现原理(不落地方式加载dex)](http://www.wjdiankong.cn/blog/android%E4%B8%ADapk%E5%8A%A0%E5%9B%BA%E5%AE%8C%E5%96%84%E7%AF%87%E4%B9%8B%E5%86%85%E5%AD%98%E5%8A%A0%E8%BD%BDdex%E6%96%B9%E6%A1%88%E5%AE%9E%E7%8E%B0%E5%8E%9F%E7%90%86%E4%B8%8D%E8%90%BD%E5%9C%B0/) 时隔半年,困扰的问题始终是需要解决的,之前也算是没时间弄,今天因为有人在此提起这个问题,那么就不能不解决了,这里写一篇文章记录一下吧。那么是什么问题呢?就是关于之前的一个话题:Android中apk加固技术实现,关于这个问题,之前的一篇文章已经说过了,没有了解的同学可以点击这里:[Android中apk加固技术实现](http://www.wjdiankong.cn/blog/android%E4%B8%AD%E7%9A%84apk%E7%9A%84%E5%8A%A0%E5%9B%BA%E5%8A%A0%E5%A3%B3%E5%8E%9F%E7%90%86%E8%A7%A3%E6%9E%90%E5%92%8C%E5%AE%9E%E7%8E%B0/) 7. [Binder 源码分析](https://github.com/xdtianyu/SourceAnalysis/blob/master/Binder%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90.md) Binder 是一种 Android 进程间通信机制,提供远程过程调用(Remote Procedure Call)功能。我们最直接的使用是调用 Context.getSystemService() 来获取系统服务,或直接使用 AIDL 来实现多个程序(APP)间数据交互。Binder 是非常重要的 Android 基础组件,几乎所有的进程间通信都是使用 Binder 机制实现的。本文将结合源码展开讲述 Binder ,同时对一些重要知识点提供扩展阅读的参考。 8. [Service源码解析](https://github.com/asLody/SourceAnalysis/blob/master/Service%E6%BA%90%E7%A0%81%E8%A7%A3%E6%9E%90.md) Service是Android四大组件之一。在一般的App开发场景中,它的存在往往是为了保证App切换到后台后,仍然具备处理数据的能力。Service实现了一套异步的跨进程通信模型,通过Binder机制,Service可以优雅的屏蔽跨进程调用的复杂性。一般来说,一个普通的Service运行在当前进程的主线程中,也就是说,如果不开辟线程,把耗时的操作直接甩在Service,那么系统就会赏你一个ANR(application Not Responding)警告。当然,为了方便做耗时操作,SDK层也提供了IntentService,它开辟了一个Work Thread来顺序处理耗时请求,从而避免了阻塞主进程。 9. [如何调试Android Framework?](http://weishu.me/2016/05/30/how-to-debug-android-framework/) Linus有一句名言广为人知:Read the fucking source code. 但其实,要深入理解某个软件、框架或者系统的工作原理,仅仅「看」代码是远远不够的。就拿Android Framework来说,整个代码量非常大不说,那些个动辄几万行的类如何去理解?所以我今天要说的就是:Debug the fucking source code!! 10. [Android 多主题之坑](http://t.cn/R5b7J7h) 在写多主题框架时,首先一个概念要分清就是多彩主题和夜间模式。多彩主题其实是白天模式的衍生,与夜间模式是对立的。虽然夜间和多彩是对立,但还是建议多彩主题应该与夜间模式解偶,因为有时夜间模式的颜色变化并不是简单的颜色取反,受产品设计的影响较大,有时甚至一个tag在夜间和多彩中的取色完全不一样的,这时如果还在强求通过一次编码“通吃“多彩和夜间,这样的做法完全是不明智的,同时也会导致框架易用性变差。 11. [React Native痛点解析之性能调优](http://t.cn/R5b7fF8) 自从React Native出世,虽然官方一直尽可能的优化其性能,为了能让其媲美原生App的速度,但是现实感觉有点不尽人意。接下来介绍下实践中遇到的一些性能问题以及优化方案。以下对性能参数的依据是来自于React Native自带的FPS Monitor. 12. [Attr、Style和Theme详解](http://t.cn/R5b7cCa) 这三个概念贯穿Android框架的方方面面,是Android程序设计中很重要的一环,理解它们,并能学以致用,不但可以让你的代码变得简洁明了,还可以让你的应用更加灵活。但目前网上资料对这块介绍的知识点往往比较散,不是很系统全面,在此特以自己开发经验总结此文一篇,希望可以帮助初学者把这三个概念彻底搞明白,开发出高质量的Android代码。 13. [深入理解密码技术](http://t.cn/R5bZU7D) DES是1977年美国联邦信息处理标准中使用的一种对称密码技术,曾今被美国和其他国家政府银行使用。不过现在已被暴力破解,我们除了用它解密以前的密文外,已不再使用DES了。不过这里我们可以用它来了解下什么是对称加密。 14. [Android 深入理解Loader机制 让APP轻装上阵](http://www.jianshu.com/p/385327e35711) Android开发者都经历过APP UI开发不当 会造成overDraw,导致APP UI渲染过慢,但是很多人却没听过overLoad,overLoad一般是由于开发者在主线程操作耗时操作,导致程序变慢 甚至出现的anr的现象,那么android早已为这种现象提供完美的解决方案,就是今天给大家说的Loader机制。 15. [如何获取Android系统中申请对象的信息](http://ragnraok.github.io/get_android_alloc_object_info.html)(By ragnarok) 最近一直在做有关内存方面的优化工作,在做优化的过程,除了关注内存的申请量以及GC的情况之外,我们经常需要想方法找出是那些对象占用了大量内存,以及他们是如何导致GC的,这意味着我们需要获取对象申请的信息(大小,类型,堆栈等),我们这篇文章来介绍下几种获取对象申请信息的方法 16. [Android JNI原理分析](http://gityuan.com/2016/05/28/android-jni/) JNI(Java Native Interface,Java本地接口),用于打通Java层与Native(C/C++)层。这不是Android系统所独有的,而是Java所有。众所周知,Java语言是跨平台的语言,而这跨平台的背后都是依靠Java虚拟机,虚拟机采用C/C++编写,适配各个系统,通过JNI为上层Java提供各种服务,保证跨平台性。 17. [Material Design技术分享](http://t.cn/R5AwkDN) 因项目需要接触了近一个月的Material Design,之前只觉得它美丽而神秘,真正接触起来发现确实不错。针对这段时间做个小总结,也给广大战友们分享点踩坑的经验。第一部分是针对Material Design的个人总结,第二部分是近段时间接触到符合Material Design风格的控件以及动画总结。 18. [Android客户端性能优化](http://blog.tingyun.com/web/article/detail/155) 众所周知,一个好的产品,除了功能强大,好的性能也必不可少。有调查显示,近90%的受访者会因为APP性能差而卸载,性能也是造成APP用户沮丧的头号原因。那Android客户端性能的指标都有哪些?如何发现和定位客户端的性能问题?本文结合多个项目的开发实践,给出了要关注的重要指标项目,以及定位和解决性能问题的一般步骤。 ### 开源库&项目 1. [RxUi](https://github.com/artem-zinnatullin/RxUi) Implementation of pure functional concept of talking to Android View layer in a Reactive way 2. [CalendarSelector](https://github.com/TUBB/CalendarSelector) 一个日期显示和选择库,可以用来选择一段连续的和多个不连续的日期,具体的UI完全抽象出来了,可以高度自定义 3. [MarqueeView](https://github.com/sfsheng0322/MarqueeView) 垂直滚动的跑马灯效果 4. [BubbleView](https://github.com/cpiz/BubbleView) 一个带箭头的Android气泡控件/容器类,支持在布局中通过自定义属性或代码进行丰富的定制,包括箭头朝向、箭头位置、气泡弧角、边线颜色、边线粗细、颜色填充、填充Padding等等 5. [Android-Material-Themes-Demo](https://github.com/StevenByle/Android-Material-Themes-Demo) 一个教你怎么使用 Material Design 主题的 Demo 6. [TimePickerDialog](https://github.com/JZXiang/TimePickerDialog) Android时间选择器,支持年月日时分,年月日,年月,月日时分,时分格式,可以设置最小时间(精确到分) 7. [sailorcast](https://github.com/fire3/sailorcast) 一个面向Android设备的互联网免费视频播放客户端。主要功能是快速的DLNA投射以及无广告的本地播放 8. [android-easy-gcm](https://github.com/joxad/android-easy-gcm) Use this library to add GCM to your project, only in a few minutes 9. [EasyRecyclerView](https://github.com/Jude95/EasyRecyclerView) 将开发中常用的RecyclerView的各种需求封装进库,并且adapter支持数据管理,Header与Footer添加,加载更多 10. [material-tip](https://github.com/fcannizzaro/material-tip) Android Library for prompt tip ### 工具 1. [JAADAS](https://github.com/flankerhqd/JAADAS) Joint Advanced Defect assEsment for android applications 2. [PsMirror](http://www.psmirror.cn/) 一款实时预览photoshop设计稿的工具。 它让你极方便地在手机上查看PS中的设计稿, 提升设计效率。 支持android/ios两个平台, 支持wifi/usb两种连接方式, 连接稳定响应速度快。 3. [eventbus3-intellij-plugin](https://github.com/kgmyshin/eventbus3-intellij-plugin) Plugin to navigate between events posted by EventBus 4. [quick-look-plugins](https://github.com/sindresorhus/quick-look-plugins) 几个 Mac 下的用来快速预览相关文件的插件 ### 技术之外 1. [如何打造工程师文化?](http://mp.weixin.qq.com/s?__biz=MzA3NTM4NDE2Mw%3Cmark%3E&mid=2649545481&idx=1&sn=ffaf444447fa30f54aa2ae733f20ae68&scene=4#wechat_redirect) 我作为面试官最喜欢问工程师的问题是要告诉我在他们以前的公司,他们喜欢和不喜欢的关于工程师文化的事。我采访了500多人 - 其中许多来自顶尖高科技公司,如Facebook,谷歌,亚马逊,Palantir,和Dropbox - 随着时间的推移,这种面试问题也告诉我优秀工程师喜欢和尽量避免地方。根据采访答复和我个人经验,从过去七年跨越谷歌,Ooyala和Quora的工作,我总结了为建立一个良好的工程文化一个团队可以做的十件事情。 > 版权声明:欢迎自由转载-非商用-非衍生-保持署名 | [Creative Commons BY-NC-ND 4.0](https://creativecommons.org/licenses/by-nc-nd/4.0/)