Android Weekly Notes Issue #229
Android Weekly Issue #229
October 30th, 2016
Android Weekly Issue #229
Android Weekly笔记, 本期内容包括: 性能库Pury的插件化; 一种新的多选设计和实现; 音频播放; Dagger的测试mock方案; ConstraintLayout的链式约束; Mobile Vision API的二维码扫描功能; RxJava的使用缺陷讨论; SOLID原则图解.
ARTICLES & TUTORIALS
Get access to raw profiling results with plugins for Pury
Pury是一个做profile的工具, 前面有过一篇文章介绍: Pury.
本文是作者的另一篇文章, 讲Pury的插件化和扩展.
另外, 作者最近正在集成Google Analytics到Pury中.
Building a Multiselection Solution for Android in Kotlin
在移动应用上的多选设计很难, 通常不是很灵活, 用起来也不舒服.
本文推荐了一种全新的多选设计: 把屏幕分为两部分: 包括主要的列表和选中列表. 选中的项目自动移动到选中列表中去.
这个设计概念的实现: ViewPager + 两个RecyclerView.
作者选用了kotlin来实现. 列举了几个kotlin的features: Extension functions, Null safety, Collections, Better syntax.
作者的库: Multi-Selection.
本文中还介绍了如何使用这个库.
Audio (not) playing in Android
关于Android上的音频播放, 作者的总结文章.
音频播放的方式有:
关于MediaPlayer的使用, 官方文档: Media Playback, 本文中有一张图是MediaPlayer的生命周期图.
作者逐个列举了实际使用这些API时可能会遇到的一些issues. 并且最终选择的最佳解决方案是Google的ExoPlayer, 2.0版本已经解决了她之前遇到的所有issues.
Providing test doubles with Dagger 1 and Dagger 2
这篇文章讲在使用Dagger1和Dagger2的项目中, 如何为测试mock依赖.
ConstraintLayout Chains – Part 1
作者讲了ConstraintLayout的一个重要特性: chains, 链.
chains是一个机制, 把一些独立的Views链起来, 然后我们可以对这一个集合来采取一些行为.
比如选中一个parent下的两个TextView(这两个本来是分别对齐parent的左右), 然后选择"Center Horizontally", 就是建立了一个链.
在xml中实际上给这两个view都各自加上了一条限制条件, 限制它们在对方的(左/右)边, 这两条对称性的限制条件就构成了一个链.
这种链叫spread chains, 是默认的style.
Machine Learning with the Mobile Vision API — Part 2
使用Mobile Vision的Barcode API来进行二维码检测.
Code: barcode-detector.
Reactive Frustrations
大多数Rx相关的文章都说优点, 本篇不同, 作者分享了在使用RxJava过程中碰到的一些烦人的事情.
不过尽管有这些挫折, RxJava仍然是一个很棒的工具.
文档
RxJava的文档有时候对初学者来说会很具迷惑性.
推荐看: RxMarbles, 有操作符图解.
匿名类
RxJava的使用中会构建很多匿名类.
推荐使用: Retrolambda, Kotlin, 或Jack.
忘记subscribe
这是一个常见的错误, 如果只写好了Observable但没有触发, 通常是没有subscribe, 因为Observable是被动的, 只有当被订阅的时候才会触发.
代码的推理
有时候很难看见一块代码就知道执行结果, 必须往上游排查.
所以作者在他们的项目中规定了一项对于Observable的命名规范:
...Once表示只发射一次; ...Stream表示会发射值, 或者不发射, 但是不会completes; ...OnceAndStream订阅时会发射值, 之后可能会继续发射, 但是不会停止.
...map操作符
有一些比较容易混淆的操作符:
flatMap: 并行;switchMap: 中断前一个, 串行;concatMap: 等待前一个结束, 串行;
Designing something S.O.L.I.D
SOLID是软件开发的五项原则:
SOLID (single responsibility, open-closed, Liskov substitution, interface segregation and dependency inversion).
这里是Wiki的解释.
这篇文章图形化地解释了SOLID, 配图和例子都很有趣.
DESIGN
Design Is Never Done
Material Design的新工具套件和开源项目.
LIBRARIES & CODE
EasyMVP
一个MVP库. 比较特别的几点:
- 使用注解来注入Presenter(可以和Dagger2结合使用, 否则只能注入无参构造), 绑定Presenter和View的生命周期;
- 使用Loaders来字啊configurations changes时保存Presenter;
- 加上
easymvp-rx插件后, 遵循Clean Architecture原则, 加入了domain层, 提供了UseCase的基类;
Input Mask
一个小的工具库, 可以按格式显示用户的输入. 比如在输入上加括号, 每三位数字空一格之类的.
sdk-artifact-sync
一个脚本, 同步你local Android SDK中的所有artifacts到一个remote的Maven artifact host上.
material-remixer
material-remixer是一个工具, 利用它可以实时调整产品的UI参数. 目标平台: Android, iOS和Web都能用的工具.
News
ConstraintLayout beta 2 is now available
ConstraintLayout beta 2发布啦, 修改了一些issues并改善了性能.
Google Play Services Release Notes
Google Play Service 9.8发布了.
Some new Firebase libraries
Firebase也发了新版.
Android Weekly Notes Issue #229的更多相关文章
- 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 #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的使用; ...
- Android Weekly Notes Issue #231
Android Weekly Issue #231 November 13th, 2016 Android Weekly Issue #231 Android Weekly阅读笔记, Issue #2 ...
随机推荐
- 免费SSL证书 之Let’s Encrypt申请与部署(Windows Nginx)
我着着皇帝的新衣,但是你看不见 有一颗愿意等待的心,说明你对未来充满希望.有一颗充满希望的心,那么等待又算什么.人就是在等待与希望中度过,我们永远要对未来充满信心! 读在最前面: 1.本文案例为 ...
- MEF学习
一. 什么是MEF MEF(Managed Extensibility Framework)是一个用于创建可扩展的轻型应用程序的库. 应用程序开发人员可利用该库发现并使用扩展,而无需进行配置. 扩 ...
- Cowboy 开源 WebSocket 网络库
Cowboy.WebSockets 是一个托管在 GitHub 上的基于 .NET/C# 实现的开源 WebSocket 网络库,其完整的实现了 RFC 6455 (The WebSocket Pro ...
- Leetcode 笔记 35 - Valid Soduko
题目链接:Valid Sudoku | LeetCode OJ Determine if a Sudoku is valid, according to: Sudoku Puzzles - The R ...
- [C#版本]有趣啊!各种编程语言实现 2 + 2 = 5
首页新闻里面那个 [新闻头条]有趣啊!各种编程语言实现 2 + 2 = 5 其他的就不评论的,但是其中C#版的 真是逗比啊...评论中各种吐槽有木有... static void Main (stri ...
- 菜鸟学Struts2——HelloWorld
写在前面 自从工作后就过上了只有一个月记忆的生活,太健忘,很多学过的东西因为用得少便忘记了,第二次学习struts,为了以后便于查阅,开始自己的博客之旅.Struts的学习还是从Hello World ...
- Entity Framework 6 Recipes 2nd Edition(9-7)译->在WCF服务中序列化代理
9-7. 在WCF服务中序列化代理 问题 从一个查询里返回一个动态代理对象,想要把它序列为一个POCO(Plain-Old CLR Objects)对象. 实现基于POCO实体对象, 在运行时,EF会 ...
- Javascript数组操作
使用JS也算有段时日,然对于数组的使用,总局限于很初级水平,且每每使用总要查下API,或者写个小Demo测试下才算放心,一来二去,浪费不少时间:思虑下,堪能如此继续之?当狠心深学下方是正道. 原文链接 ...
- Enterprise Solution 进销存管理软件 C/S架构,支持64位系统 物流,资金流,信息流全面集成
定位 Target Customers 中小型生产制造企业,批发零售类,贸易企业 主要模块 Modules 采购.销售.库存.财务账款四大模块,包含企业运作过程中销售.采购.库存各岗位需 ...
- SQL Server 复制系列(文章索引)
一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 前言(Introduction) 复制逻辑结构图(Construction) 系列文章索引(Catalog) 总结&am ...