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. 内网穿透+VS2015自带IIS express实现本地调试(微信等需要将开发环境暴漏到外网的情况使用)

    今天一个兼职结束了,又要开始寻找新的兼职公司了 ,为了贴补家用啊,为了给儿子更好的生活加油! 抒情完毕进入正题,本篇文章要解决的问题是其实在开发微信支付,微信公众号等回调地址必须是外网可访问的80端口 ...

  2. [MongoDB] - Window7下安装及BSON基本介绍

    MongoDB是一种NOSQL(Not Only SQL)类型的文档型数据库.NoSQL数据库与传统的关系型数据库相比,它具有操作简单.完全免费.源码公开.随时下载等特点,并可以用于各种商业目的.Mo ...

  3. devexpress控件layoutview特效之一旋转木马的实现

    1.devexpress有很多很好的特效,最近做了个旋转木马的特效,给大家分享下.效果图如下: 2.这里的控件为gridcontrol,里面的view为layoutview.数据绑定的代码与其他gri ...

  4. CSS3 3D的总结(初学者易懂)

    CSS3 3D案例的总结 如果要说是3D的基础概念,首先我就来说一说rotateX().rotateY().rotateZ()这几个属性 rotateX():对应的是3D模型中的X轴上的旋转,传入的参 ...

  5. [笔记]关于支持向量机(SVM)中 SMO算法的学习(一)理论总结

    1. 前言 最近又重新复习了一遍支持向量机(SVM).其实个人感觉SVM整体可以分成三个部分: 1. SVM理论本身:包括最大间隔超平面(Maximum Margin Classifier),拉格朗日 ...

  6. 【CNMP系列】CentOS7.0下安装Nginx服务

    话步前言,CNMP之路,系统起步:http://www.cnblogs.com/riverdubu/p/6425028.html 这回我来讲解下CentOS7.0下如何安装和配置Nginx服务 Ngi ...

  7. 规范 : angular 组合 jquery plugin

    jquery 会有document.ready ,这是会把model value 给 set 去 jquery ,如果set 不进,可能需要整个渲染(refresh).在操作时需要找到接口,在找到va ...

  8. 超出区域文字显示为省略号或者剪切效果——CSS的生僻操作

    每门语言总有那么一些不太常用,却又不可或缺的语法操作.下面说一下,在HTML文件中,如何设置用 "省略号" 和 "剪切" 代替大量文字的效果. 以下是HTML的 ...

  9. Material Design学习-----TextInputLayout

    TextInputLayout是为EditText提供了一种新的实现和交互方式.在传统的EditText中存在一个hint属性,是说在editext中没有内容时,默认的提示信息.当想edittext中 ...

  10. js检测数据类型的方法你都掌握了几个?

    //1.typeof检测/*var obg = {};var ary = [];var reg = /^$/;var fn = function () {};var num = 1;var bool ...