Android Weekly Notes Issue #250
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)特性.
两个关键组件: TextFactory和DynamicTest.
文中代码详细说明了它们的用法.
Flying Solo with Android Development
作者几经周转, 从4人Android团队到2人团队, 现在又到了一个新团队, 作为团队里唯一Android开发. 在这篇文章中, 她分享了一些觉得不错的学习资源和她平时的工作习惯以及建议.
Introduction to SpringAnimation with examples
本文讲弹簧效果动画的实现.
Dynamic-animation是Android Support Library 25.3.0最新引进的, 用于实现基于物理的动画.
作者这篇文章介绍了SpringAnimation和SpringForce的用法, 提供了几个例子, 动态改变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_PICTURE和ACTION_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的更多相关文章
- Android Weekly Notes Issue #230
Android Weekly Notes Issue #230 November 6th, 2016 Android Weekly Issue #230. Android Weekly笔记, 本期内容 ...
- Android Weekly Notes Issue #227
Android Weekly Issue #227 October 16th, 2016 Android Weekly Issue #227. 本期内容包括: Google的Mobile Vision ...
- Android Weekly Notes Issue #237
Android Weekly Issue #237 December 25th, 2016 Android Weekly Issue #237 这是本年的最后一篇issue, 感谢大家. 本期内容包括 ...
- Android Weekly Notes Issue #229
Android Weekly Issue #229 October 30th, 2016 Android Weekly Issue #229 Android Weekly笔记, 本期内容包括: 性能库 ...
- Android Weekly Notes Issue #221
Android Weekly Issue #221 September 4th, 2016 Android Weekly Issue #221 ARTICLES & TUTORIALS And ...
- Android Weekly Notes Issue #219
Android Weekly Issue #219 August 21st, 2016 Android Weekly Issue #219 ARTICLES & TUTORIALS Andro ...
- Android Weekly Notes Issue #236
Android Weekly Issue #236 December 18th, 2016 Android Weekly Issue #236 本期内容包括: Google的物联网平台Android ...
- Android Weekly Notes Issue #235
Android Weekly Issue #235 December 11th, 2016 Android Weekly Issue #235 本期内容包括: 开发一个自定义View并发布为开源库的完 ...
- Android Weekly Notes Issue #234
Android Weekly Issue #234 December 4th, 2016 Android Weekly Issue #234 本期内容包括: ConstraintLayout的使用; ...
随机推荐
- MongoDB学习总结(二) —— 基本操作命令(增删改查)
上一篇介绍了MongoDB在Windows平台下的安装,这一篇介绍一下MongoDB的一些基本操作命令. 下面我们直奔主题,用简单的实例依次介绍一下. > 查看所有数据库 (show dbs) ...
- 使用光盘iso实现Linux操作系统的自动安装部署
前边写了一篇使用 PXE 的方式批量安装操作系统,不是任何时候任何地方都有环境来通过 PXE 方式来进行安装.如果此时需要通过光盘安装,默认的情况下是通过交互式方式进行安装,其实也可以通过 kicks ...
- JavaWeb验证码的使用
在Java Web开发中,我们经常需要使用到验证码功能,一般情况下,我们可以将产生的验证码保存到服务器端中的session中,这种方式中,是使用服务器来保证验证码的功能.另外,我们也可以采用js产生验 ...
- POJ 2914 Minimum Cut Stoer Wagner 算法 无向图最小割
POJ 2914 题意:给定一个无向图 小于500节点,和边的权值,求最小的代价将图拆为两个联通分量. Stoer Wagner算法: (1)用类似prim算法的方法求"最大生成树" ...
- 用C++编一程序,先输出一行sun mon tue wed thu fri fri,接着使用右对齐打印出日期,像日历那样
用C++编一程序,先输出一行sun mon tue wed thu fri fri,接着使用右对齐打印出日期,像日历那样 先输出一行sun mon tue wed thu fri fri,再提醒用户输 ...
- 【Zookeeper】源码分析之网络通信(三)
一.前言 前面已经学习了NIOServerCnxn,接着继续学习NettyServerCnxn. 二.NettyServerCnxn源码分析 2.1 类的继承关系 public class Netty ...
- php实现留言板功能
这个小小的留言板功能适合班级内或者公司内部之间的讨论,对话和留言,非常的方便,更重要的是无需网络,对于公司管理层来说是非常乐于常见的, 下面是这个留言板的写法: 1 首先是登录页面: <form ...
- js获取浏览器宽高
IE中: document.body.clientWidth ==> BODY对象宽度 document.body.clientHeight ==> BODY对象高度 document.d ...
- Ichars制作数据统计图
数据统计图基本上每个网站的后台都要做,不仅要做还要的非常详细才行,这样才能全面的具体的了解网站数据.之前用的jfreechart没有iChartjs用着方便,也没有iChartjs的效果炫,所以果断弃 ...
- Python基础入门教程(4)(数据类型)
人生苦短,我学Pyhton Python(英语发音:/ˈpaɪθən/), 是一种面向对象.解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于199 ...