Android 开发周报:Android M、iOS9 比拼、多种组件源码分析

  • 郭亮

2015 年 6 月 16 日

话题:移动Android语言 & 开发架构

新闻

  1. 《越来越像:iOS9 与 Android M 简单上手对比》:谷歌和苹果都已经在日前先后放出了下一代系统的开发者预览版本,既 Android M 开发者预览版以及 iOS9 开发者预览版。今年的 Android M 和 iOS 重点都集中在底层改进、用户体验提升以及电池续航管理上,纯粹视觉上的变化并不显著。而且两者目前都处在早期的开发者预览版阶段. 而现在,是时候将两者放在一起进行一番对比了。
  2. 《谷歌建网站帮用户挑选 Android 手机》:目前市面上有许多不同的产品,如何选择一款最适合自己的手机也非常困难。这种选择对于新手用户来说尤为困难,因此谷歌最近专门推出了一个新网站,可以帮助用户选择目前最适合自己的智能手机。这个网站只需要用户按照步骤回答问题,就可以筛选出最适合自己的那一款。这里是Which Phone网址。

教程

  1. 《Google Developing for Android —— Tools》:Andorid 提供了很多可以帮助开发者 debug 和分析问题的工具,它们可以让 App 拥有更好的性能。这些检测工具涵盖了内存分析,比如 Allocation Tracker(在 DDMS 和 Android Studio 中都有)和设备性能。知道这些工具很重要,但更重要的是能够充分的使用这些工具,保证你的应用拥有期望的表现(60 帧限制,避免垃圾回收器搅动),尽可能的优化和提高整体体验。
  2. 《Android 应用程序 UI 硬件加速渲染的 Display List 渲染过程分析》: 在硬件加速渲染环境中,Android 应用程序窗口的 UI 渲染是分两步进行的。第一步是构建 Display List,发生在应用程序进程的 Main Thread 中;第二步是渲染 Display List,发生在应用程序进程的 Render Thread 中。Display List 的渲染不是简单地执行绘制命令,而是包含了一系列优化操作,例如绘制命令的合并执行。本文就详细分析 Display List 的渲染过程。
  3. 《LocalBroadcastManager 的实现原理》:对 LocalBroadcastManager 大家应该都不陌生,相对 BroadcastReceiver,它只能用于应用内通信,安全性更好,同时拥有更高的运行效率,也是需要发送应用内广播时的官方推荐。我们知道 BroadcastReceiver 的通信是通过 Binder 机制实现,而 LocalBroadcastManager 因为叫 LocalBroadcast,是否也是 Binder 通讯方式为底层实现的呢?本文为我们揭晓了答案。
  4. 《Android 应用 Activity、Dialog、PopWindow、Toast 窗口添加机制及源码分析》:Android 屏幕显示的就是 Window 和各种 View,Activity 在其中的作用主要是管理生命周期、建立窗口等。也就是说 Window 相关的东西对于 Android 屏幕来说是至关重要的。本文分析了 Android 应用中 Activity、Dialog、PopWindow 加载显示机制以及 Window、WindowManager 相关的一些知识。
  5. 《面向 UI 的单元测试框架——AndroidUITestRunner》:通常我们使用的单元测试框架都是用来测试一些非 UI 的逻辑的,如 JUnit,CPPUnit。单元测试是非常好的习惯,一方面单元测试本身就是一份文档,另一方面单元测试有助于强迫使你的代码耦合更加松散(模块可以独立测试)。移动应用一般都是 MVC 的结构,Mode 层面使用 JUnit 进行单元测试很方便,但是想测试 View 就无能为力了,本文介绍了一种可行的 UI 单元测试方案——AndroidUITestRunner。
  6. 《深入理解 PackageManagerService》:PackageManagerService 负责管理系统的 Package,包括 APK 的安装,卸载,信息的查询等等。它的功能非常的多,也非常的强大。PackageManagerService 和 Java 中其他系统服务一样,也是一个 Service,作者结合源码详细分析了 PackageManagerService 的相关知识,有助于我们了解 Apk 的整个安装、运行过程。
  7. 《自定义 NavigationView》:Google I/O 2015 给大家带来了 Android Design Support Library,对于希望做 md 风格的 App 来说,简直是天大的喜讯了,大家可以通过Android Design Support Library该文章对其进行了解,也可以直接在 github 上下载示例代码运行学习。本文首先介绍了 NavigationView 的使用,然后介绍了如何自己去编写该控件。
  8. 《谷歌如何找回「失散多年」的设计师》:本文是一篇非技术文章,不过对我们设计优秀的产品或许有一些帮助。与苹果相比,谷歌更多地是一家技术驱动的科技公司,其产品设计充满着浓厚的工程师思维,正因为如此,其设计也一直为用户所诟病。但是现在的谷歌比任何时候更加注重设计,运用 Material Design 的安卓 5.0 给人眼前一亮的感觉:清爽的界面,清晰的交互逻辑,应用统一的设计风格。本文将详细介绍谷歌设计的演变过程、谷歌领导层的思想是如何一步步转变,设计如何使得谷歌更加团结。

开源项目

  1. ProductTour:该项目实现了 Google 系 App 特有的引导页面,包含 parallax effect 效果,色彩背景的渐变动画等。该项目实现的效果、体验都很赞,我们可以将该引导页快速的集成到自己的生产项目中。
  2. velocimeter-view:该项目是一个效果很赞的速度计,可以自定义表盘颜色、指针速度。
  3. Notes:Notes 是一款基于 Material Design 的开源笔记本应用,支持多款彩色主题的选择、分享功能等。下载运行该项目,了解更多功能。

工具

  1. infer:infer 是 Facebook 开源的一个 Java,Object-C 静态检测工具,可帮助 Android,iOS 开发者检测一些潜在的 bug 及资源泄漏问题,infer 已经被用于 Facebook 的 Messenger,Instagram 等自家 App 开发之中,和 Square 的内存泄漏检测工具 leak canary 有一拼。

感谢徐川对本文的审校。

给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群)。

移动Android语言 & 开发架构