Android 开发周报:Google I/O 大会日期确定、Bitmap 内存详解

  • 郭亮

2016 年 1 月 19 日

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

新闻

  1. 《2016 Google I/O 大会日期确定》:近日,谷歌正式宣布了一年一度的 Google I/O 开发者大会 2016 年的举办日期为 5 月 18 日—20 日。过去的一年对谷歌来说相当重要,他们发布了安卓 6.0,在自动驾驶汽车领域独领风骚,进行了架构重组,诞生了名为 Alphabet 的新公司。虽然取得了许多成绩,但并不代表谷歌会躺在功劳簿上睡大觉。在今年的 Google I/O 大会上,谷歌依然会带给大家许多惊喜。此外,微软的重新崛起和苹果的步步紧逼也让谷歌压力山大,如果谷歌不能拿出更好的产品,恐怕就会在三巨头的竞争中落于人后。
  2. 《ZeroTurnaround 宣布 JRebel for Android 1.0》:ZeroTurnaround 发布了 JRebel for Android 的第一个稳定版本。它是流行插件 JRebel 的 Android 版本,允许修改正在运行中的应用程序,而且不必重新部署或重启。JRebel for Android 适用于 Android Studio,可以从 JetBrains 插件库下载,支持所有运行 Android 4.0 及以上版本的手机和平板。ZeroTurnaround 提供了为期 21 天的免费试用,起步价为每年 49 美元。

教程

  1. 《Android 开发绕不过的坑:你的 Bitmap 究竟占多大内存》:从事 Android 开发的同学几乎都遇到过 OOM 的问题。很多时候引起 OOM 的原因就是图片太大。因为图片消耗内存比较严重,所以在加载之前我们最好知道要加载的图片会占用多大的内存。getByteCount就是来干这件事情的,它是由 Android API 直接提供的一个方法。本文顺藤摸瓜,详细分析了该方法的实现过程。
  2. 《手把手教你用 Kotlin 实现 ButterKnife》Kotlin是一门与 Swift 类似的静态类型 JVM 语言,由 JetBrains 设计开发并开源。与 Java 相比,Kotlin 的语法更简洁、更具表达性,而且提供了更多的特性,比如,高阶函数、操作符重载、字符串模板。它与 Java 高度可互操作,可以同时用在一个项目中。当然,大家对ButerKnife一定也不陌生。本文讲解了用 Kotlin 实现 ButterKnife 的完整过程,是我们学习 Kotlin 的优秀教程。
  3. 《如何选择 compileSdkVersion, minSdkVersion 和 targetSdkVersion》:当你发布一个应用之后,可能没过几个月 Android 系统就发布了一个新版本。但之前所有东西还能够正常工作,这是因为 Android 支持向前兼容。用户在升级到新版 Android 的时候,用以前版本的 SDK 构建的现有应用理论上应该不会出问题。这就是 compileSdkVersion, minSdkVersion 和 targetSdkVersion 的作用,他们分别控制可以使用哪些 API,要求的 API 级别是什么,以及应用的兼容模式。阅读文章,了解更详细的内容。
  4. 《AndroidFlux- 异步请求和网络》:Flux 是一个由 Facebook 开发的、利用单向数据流实现的应用架构,用于 React。Flux 应用有三个主要的部分组成:调度程序、存储和视图(React 组件)。在移动开发中,异步网络操作必不可少,本篇着重介绍在 Flux 模式中如何处理异步操作的问题,并深入一些细节,比如如何在异步操作时显示异步状态。另外,网络操作仅仅是异步操作的一种,最后扩展 ActionCreator 的语义来处理更多的业务逻辑。
  5. 《Android 工具箱之 Context 解析》:Context 是 Android 开发过程中出现频率最高的类。通过 Context 可以获取应用状态的信息。有了 Context,activitys 和 Fragments 以及 Services 能够使用资源文件、图片、主题以及其他的文件夹内容。Context 也可以用于 Android 自带服务,例如 inflate,键盘,以及 content providers。本文从 Context 的用途、适配器、内存溢出、Application 与 Context 等几个角度分析了 Context,对于我们深入了解 Context 有一定的帮助。
  6. 《Android 应用开发之自定义 View 触摸相关工具类全解》:本文是对于自定义 View 中工具类、事件传递的一个总结。从 ViewConfiguration 基础参数工具类、VelocityTracker 手势速率工具类、GestureDetector 手势工具类等几个方面总结了自定义控件常用的知识点。其实关于自定义控件的基础触摸相关的内容并不是很多,掌握了文章中提到的这些内容,相信你就能够玩转 Android 自定义控件触摸相关的处理。
  7. 《事件总线源码分析》:在 Android 中处理不同组件之间的事件传递依靠广播机制,即 Intent/BroadcastReceiver 机制,其原理类似于传感网中的 Ad hoc 网络模式,所有组件处在一种无序状态。事件总线机制则引入中心控制节点来集中管理事件,类似于移动通信网络中的基站功能。本文以 EventBus 源码为例,请解了 Android 中事件总线的一些知识点。

开源项目

  1. AutoRobRedPackage:这是一款自动抢微信红包的开源项目,自带关闭窗口功能。
  2. FastAdapter:RecyclerView 是 Android 中最常用的组件之一,使用 RecyclerView 的时候,必须实现 Adapter 中提供的相应接口。所以每次调用 RecyclerView 时,就需要重复实现 Adapter 中的这些方法。FastAdapter 就是用来解决重用问题的,使用 FastAdapter 后,我们就只需关心 item 与 view 的部分就可以了。
  3. GifView:这是一个播放 Git 图片的库,支持播放、暂停、停止功能。

图书

  1. 《Gradle for Android(译)》:很多同学都写过有关于 Gradle 的文章,但大家侧重点各有不同。Gradle for Android 是一本详细介绍 Gradle 的图书。该项目是《Gradle for Android》的中文翻译,推荐大家仔细阅读,了解 Gradle 的工作原理。

工具

  1. pngquant:pngquant 是一个有损的 png 压缩开源库,提供了命令行形式和源码库形式。通过这个库的转化可以显著减少 png 文件大小(通常减少 70%),并且保持原有透明度通道。另外,生成的图片文件可以兼容所有现代 web 浏览器,在 IE6 下比 24-bit PNGs 也有更好的表现。

感谢徐川对本文的审校。

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

移动Android语言 & 开发架构