Android 开发周报:Chrome、Android 欲合二为一、Adapter 优化探索

  • 郭亮

2015 年 11 月 6 日

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

新闻

  1. 《谷歌欲将 Chrome 和 Android 合二为一》:据外电报道,谷歌正筹划把 PC 操作系统 Chrome 与移动操作系统 Android 进行合并。此举表明移动计算已越来越占据主导地位。消息人士称,为把这两款操作系统合并到一起,谷歌的技术人员已付出了近两年的辛劳工作。这项工作在日前取得了进展。据悉,谷歌计划在 2017 年正式推出合并版操作系统,而且该公司会在明年对外展示早期版的新款操作系统。
  2. 《苹果史上第二款 Android App 已在 Google Play 上架》:苹果有史以来第一款为 Android 开发的 App,就是 Move to iOS,这款方便 Android 用户跳槽的工具程序。而史上第二款的攻击性则没有那么大,是一款为 Beats Pill+ 而设的蓝牙喇叭控制 App。它可提供 DJ 功能(两人控制一喇叭)、把两个 Pill+ 配对同步播放音乐,或是把它们变成一对立体声喇叭。 点这里下载该应用。
  3. 《黑莓 Android 手机本周上市》:加拿大智能手机制造商黑莓推出的首款 Android 智能手机将于本周上市。该产品或将是黑莓终止手机业务前的最后一次努力。如果新产品市场表现不佳,曾经的智能手机龙头黑莓或将选择放弃智能手机业务。

教程

  1. 《Adapter 优化方案的探索》:Adapter 在 Android 中既不是 View 也不是 Controller,而是连接 View 与 Controller 的桥梁,是一个数据和视图的绑定装置。Adapter 使用的频率非常高,但使用起来比较麻烦,也经常会让代码的可读性变差,使程序变的臃肿。本文作者本着高复用性、调用简单、逻辑清晰的原则重构了一个关于 Adapter 的库。阅读文章,了解作者的详细优化方案。文章中也给出了优化后的源码

  2. 《安卓 App 热补丁动态修复技术介绍》:当一个 App 发布之后,突然发现了一个严重 bug 需要进行紧急修复,这时候公司各方就会忙得焦头烂额:重新打包 App、测试、向各个应用市场和渠道换包、提示用户升级、用户下载、覆盖安装。有时候仅仅是为了修改了一行代码,也要付出巨大的成本进行换包和重新发布。这时候就会想到以补丁的方式动态修复紧急 Bug,不需要重新发新版。QQ 空间团队采用的解决方案是基于 Android Dex 分包策略,把有问题的类打包到一个 dex,然后把该 dex 插入到 Elements 的最前面。该技术可以简单方便的用户生产环境,性价比极高,强烈推荐大家使用。

  3. 《关于 Android Log 的一些思考》:在日常的 Android 开发中,日志打印是一项必不可少的操作,我们通过分析打印的日志可以分析程序的运行数据和情况。我们可以使用一些第三方的日志工具来提高工作效率,但如果自己来制作一款日志工具,你有什么想法呢?使用日志打印的正确姿势是什么?如何屏蔽日志信息输出?对这些问题本文进行了详细解答。
  4. 《Android MVP 模式简单易懂的介绍方式》:MVP 模式是 MVC 模式在 Android 上的一种变体。在 MVC 模式中,Activity 应该是属于 View 这一层。而实质上,它既承担了 View,同时也包含一些 Controller 的东西在里面。这对于开发与维护来说不太友好,耦合度大高了。把 Activity 的 View 和 Controller 抽离出来就变成了 View 和 Presenter,这就是 MVP 模式。当项目变的越来越大、参与的人也越来越多的时候,MVP 模式的优势就会非常明显。本文以案例的方式,通俗易懂的解释了到底什么是 MVP 模式。
  5. 《开源选型之 Android 图片缓存原理、特性对比》:从网络获取图片几乎会出现在每个 App 中。获取图片的过程比较简单:获取到本地,稍加内存缓存,添加磁盘缓存,然后再呈现给用户。但亲自去实现这样一个高性能的工具库也并非易事。所以大部分开发者会选择开源组件。目前比较流行的开源图片加载库有最早开源的 Universal ImageLoader、JakeWharton 主导的 Picasso、Google 员工开源的 Glide 以及 Facebook 上半年开源的 Fresco。作者对这几款开源项目进行了详细的分析,包括他们的优点、缺点、使用方法等。
  6. 《React Native 中组件的生命周期》:所谓生命周期,就是一个对象从开始生成到最后消亡所经历的状态,理解生命周期,是合理开发的关键。就像 Android 中的 Activity 一样,React Native(RN)中的组件也有生命周期(Lifecycle)。RN 的生命周期分为三个阶段:绘制阶段、运行和交互阶段、卸载消亡的阶段。阅读文章,了解 React Native 生命周期的工作原理。
  7. 《Activity 启动过程全解析》:本文是一篇介绍 Android 底层工作原理的文章,介绍了一个 App 是怎么启动起来、App 的程序入口到底是哪里、Launcher 到底是什么神奇的东西以及 Activity 生命周期是什么时候调用等等。本文能让我们了解从手机开机第一个 zygote 进程创建,到点击桌面上的图标,进入一个 App 的完整流程。也能帮助我们理解 ActivityManagerServices(即 AMS)、ActivityStack、ActivityThread、Instrumentation 等 Android framework 中非常重要的基础类的作用,及相互间的关系。

  8. 《Gradle 脚本基础全攻略》:Gradle 核心是基于 Groovy 的领域特定语言(DSL),具有非常好的扩展性,所以不管是简单的独立项目还是大型的多项目构建它都能高效的提高构建任务,尤其对多项目支持是非常优秀的;Gradle 还提供了局部构建功能,譬如构建一个单独子项目时它会构建这个子项目依赖的所有子项目。本文详细介绍了 Gradle 的基础知识及使用方法。

开源项目

  1. android-UCToast:该项目模仿了 UC 浏览器的一个小功能:当用户有复制动作时,自动显示浮窗。项目原理是开机自动启动的 Service 监听剪切板。复制之后,在屏幕顶部显示一个悬浮窗,显示剪贴板内容。点击悬浮窗,跳转到 Activity 页面显示。
  2. plaid:这是一个 Material Design 风格的简单 App,列表以格子形式呈现,界面参考了 Designer News, Dribbble & Product Hunt 等知名设计网站。如果你正在使用 Material Design 进行开发,不烦考虑考虑该项目的风格。
  3. Favor:Android 中我们经常会使用 SharedPreference 进行数据存储。有了 Favor 后,我们就可以通过注解的方式操作 SharedPreference,只需要写一行代码。
  4. NetGuard:这是一款开源的网络防火墙应用。NetGuard 可以控制哪些应用可以访问网络,哪些不可以。目前市面上大多数网络防火墙都需要 Root 权限,而 NetGuard 的特色就是不需要 Root 权限。赶快去下载源码,了解黑科技吧。

感谢徐川对本文的审校。

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

移动Android语言 & 开发架构