Android Weekly Issue #250

March 26th, 2017
Android Weekly Issue #250.
本期内容: 好几篇关于Android O预览版的文章; JUnit 5的动态测试; 作为团队里唯一的Android开发如何学习和工作; Support库新推出的基于物理的动画API: SpringAnimation; Uber Rider项目重构中关于依赖注入的scope层级的改动; Kotlin和RxJava的简洁性.

ARTICLES & TUTORIALS

O-h yeah! What we look forward to in Android O

Google宣布了最新Android O的预览程序. Novoda team查看了最新文档来看看什么新特性最让大家欣喜.

  • 更宽广的色域和多种颜色空间支持:
    我们不再被限制在sRGB的颜色空间里, 文档见ColorSpace.
  • 字体支持.
  • Adaptive icons: Android N中提供了圆形的启动图标; 从Android O开始, 手机开发商和launcher开发者们可以指定一个mask到应用提供的背景图上.
  • ACCESSIBILITY按钮: Accessibility services(比如TalkBack)可以在有软导航键的设备上添加一个按钮.
  • 指纹手势.
  • 自动大小的TextView.
  • Autofill APIs. 自动填表.

JUnit 5: Dynamic Tests

本篇讲如何简化一个测试cases都很类似的test suite.

首先, 找出不同的部分, 抽取一个方法, 把不相同的部分作为参数传进去.

然后用JUnit 5的动态测试(Dynamic Tests)特性.
两个关键组件: TextFactoryDynamicTest.
文中代码详细说明了它们的用法.

Flying Solo with Android Development

作者几经周转, 从4人Android团队到2人团队, 现在又到了一个新团队, 作为团队里唯一Android开发. 在这篇文章中, 她分享了一些觉得不错的学习资源和她平时的工作习惯以及建议.

Introduction to SpringAnimation with examples

本文讲弹簧效果动画的实现.

Dynamic-animation是Android Support Library 25.3.0最新引进的, 用于实现基于物理的动画.

作者这篇文章介绍了SpringAnimationSpringForce的用法, 提供了几个例子, 动态改变View的位置, 旋转和大小属性: android-springanimation-examples.

Rewriting Uber Engineering’s Rider App with Deep Scope Hierarchies

Android Uber rider app的重构.
主要讨论了由于存在很多共用组件, 所以依赖注入的设计需要改进.

首先介绍了旧的设计: 两级Scope层次.
后来他们的新设计采用了深层次的scope层级, 减少了耦合.

最后又介绍了几种他们曾经考虑过的架构模式.

It’s time to kiss goodbye to your implicit BroadcastReceivers

Android O的preview已经出来了: Android O Preview. 这是它列出来的Behavior changes.

如果你想要把app target到Android O, 而且你的manifest中注册了一些隐式的BroadcastReceiver. 那么这篇文章就是为你准备的.

Android做这一切的出发点都是为了节约电量.

Android 7.0的时候就移除了三种隐式广播的支持. 它们是CONNECTIVITY_ACTION, ACTION_NEW_PICTUREACTION_NEW_VIDEO.

现在Android O中, 除了background-broadcasts中提到的, 其他所有在manifest中注册的隐式广播都不再工作了. (注意这里的关键字: manifest中注册, 隐式广播.)

那么你的manifest中如果有receiver, 现在应该怎么办呢?

首先看看你的广播是否是隐式的. 根据文档, 所有跟你的应用没有直接关系的广播都是隐式的; 而直接相关的都是显式的.

然后检查你的应用是否真的受到了影响, 因为有一些隐式的广播是例外情况.

真的受到影响了怎么办呢? 使用JobScheduler来拯救. 但是它只在API 21以上有, 如果你的最低API小于21, 可以用官方推荐的firebase-jobdispatcher-android. 作者他们团队用的是Evernote的android-job.

如果上面的库仍然不能帮到你, 你可以考虑把广播换成动态注册的.
不管你的广播是隐式的还是显式的, Context.registerReceiver()是永远有效的. 但缺陷就是注销以后就不能再收到事件了.

Random Musings on the O Developer Preview 1

作者对Android O预览的一些看法.

比较令人担心的几点

  • 后台工作的处理: 许多隐式的广播可能不再起作用, 可能会改变某些应用的行为.
  • 多显示支持. 允许用户把一个activity投射到外部显示器上. 这个行为还需要进一步测试, 如果我们投射到一个不可触摸的显示器上会怎样?
  • 关于磁盘空间, 缓存目录.
  • Support Libraries支持的最小API为14.

有启发性的几点

  • 可以给Notification设置timeout.
  • Picture-in-Picture (PIP)模式. 一种特殊的多窗口模式, 多数被用来播放视频, TV已经有了.
  • 新字体.
  • Storage Access Framework (SAF) -> Seekable streams.
  • WebView将支持allow-cleartext设置.
  • 应用安装其他应用需要用户授权.
  • Content provider分页查询.
  • FragmentLifecycleCallbacks.
  • SmsManager可以创建tokens.
  • SharedPreferences提供了接口, 可以更换底层存储实现.
  • findViewById()不再需要强转.

其他你可能感兴趣的

  • View.setTooltipText().
  • TextView.setJustify().
  • 提供了padding和margin的Vertical和Horizontal属性, 这样一下就可以设置同一方向上的两个值.
  • ProgressBar.setMin().
  • ANDROID_ID现在是对每个应用来说, 而不是用户或设备. 见Privacy.

Writing Concise Code with Kotlin and RxJava

用Github API举例子, 用RxJava和Kotlin实现一个功能, 说明了它们的简洁性.

LIBRARIES & CODE

Fakeit

Kotlin版的假数据生成器.

Cicerone

一个轻量级的Android导航库.

data-binding-validator

表单数据验证器, 使用data binding framework实现.

LabCoat

GitLab client for Android.

NEWS

O-MG, the Developer Preview of Android O is here!

Google发布了下一个系统版本Android O的开发者预览版.

TOOLS

Android Studio meets Slack

一个小工具, 可以直接把Android Studio打的包发到Slack去.

Android Weekly Notes Issue #250的更多相关文章

  1. Android Weekly Notes Issue #230

    Android Weekly Notes Issue #230 November 6th, 2016 Android Weekly Issue #230. Android Weekly笔记, 本期内容 ...

  2. Android Weekly Notes Issue #227

    Android Weekly Issue #227 October 16th, 2016 Android Weekly Issue #227. 本期内容包括: Google的Mobile Vision ...

  3. Android Weekly Notes Issue #237

    Android Weekly Issue #237 December 25th, 2016 Android Weekly Issue #237 这是本年的最后一篇issue, 感谢大家. 本期内容包括 ...

  4. Android Weekly Notes Issue #229

    Android Weekly Issue #229 October 30th, 2016 Android Weekly Issue #229 Android Weekly笔记, 本期内容包括: 性能库 ...

  5. Android Weekly Notes Issue #221

    Android Weekly Issue #221 September 4th, 2016 Android Weekly Issue #221 ARTICLES & TUTORIALS And ...

  6. Android Weekly Notes Issue #219

    Android Weekly Issue #219 August 21st, 2016 Android Weekly Issue #219 ARTICLES & TUTORIALS Andro ...

  7. Android Weekly Notes Issue #236

    Android Weekly Issue #236 December 18th, 2016 Android Weekly Issue #236 本期内容包括: Google的物联网平台Android ...

  8. Android Weekly Notes Issue #235

    Android Weekly Issue #235 December 11th, 2016 Android Weekly Issue #235 本期内容包括: 开发一个自定义View并发布为开源库的完 ...

  9. Android Weekly Notes Issue #234

    Android Weekly Issue #234 December 4th, 2016 Android Weekly Issue #234 本期内容包括: ConstraintLayout的使用; ...

随机推荐

  1. 在windows搭建react-native android 开发环境总结

    1.安装必须的软件 1.Python 2    注意勾选 Add python.exe to Path,选项,这样就可以在安装完成后,不用手动去添加环境变量    安装完,打开cmd.exe,输入py ...

  2. Azure机器学习入门(四)模型发布为Web服务

    接Azure机器学习(三)创建Azure机器学习实验,下一步便是真正地将Azure机器学习的预测模型发布为Web服务.要启用Web服务发布任务,首先点击底端导航栏的运行即"Run" ...

  3. 【Javaweb】笔面试题 ---(1)

    Javaweb 面试题:理解才是最重要的,而不是原封不动的背下来 一.请简述doget和dopost它们的区别 1) get是从服务器上获取数据,post是向服务器传送数据. 2) 在客户端,Get方 ...

  4. Top 10 Books For Advanced Level Java Developers

    Java is one of the most popular programming language nowadays. There are plenty of books for beginne ...

  5. Scala入门 【1】

    Scala入门 [1] 转载请注明出处:http://www.cnblogs.com/BYRans/ 1 基础 val定义的为常量,var为变量 val name:Type = ***,变量名后加冒号 ...

  6. 分布式配置管理--百度disconf搭建过程和详细使用

    先说官方文档:http://disconf.readthedocs.io/zh_CN/latest/index.html 不管是否要根据官方文档来搭建disconf,都应该看一下这一份文档.精炼清晰地 ...

  7. 201521123014 java第一周总结

    201521123014 java第一周总结 1.本周学习总结 刚认识这一门新语言,我就充满了好奇心,想看看Java和学过C语言,C++有什么区别.在这一周的学习中,我认识到,对于初学者而言,Java ...

  8. HTML第二课

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  9. x86主机搭建家庭智能路由系统 ---- 设计篇

    组件简介 Proxmox: 基于Debian的虚拟化系统,支持OpenVZ和KVM. pfSense: 基于FreeBSD的开源路由系统. FreeNAS: 开源NAS系统. shadowsocks: ...

  10. ERP和MES破冰之路 [普实MES升级中国“智”造]

    题记:早在2007年,普实就提出AIO一体化产品概念,全力打造ERP的资源闭环,并取得了良好的市场效应.如今,在制造业的智能生产需求下,生产制造执行系统(MES)成功推向市场. MES是什么? 制造执 ...