November 20th, 2016
Android Weekly Issue #232
本期内容包括: Kotlin的优点讨论; MVVM模式结合RxJava和Retrofit的应用构架实现; Android中传感器使用; 如何给App写单元测试; Reductor的组合使用; Android应用进程被杀死的状态恢复和问题处理; Kotlin中的Anko; 后台任务处理库"Android Job"; VectorDrawable和PNG的使用问题等.html
本期开源库: 给ImageView和RelativeLayout的底部加曲线; 长按弹框; Switch Button控件; 给View加深度/厚度的库.java
做者他们team想要彻底用kotlin开发一个应用.
本文是他们的心得体会.android
关于函数式编程的学习, 做者推荐: 一个Scala的课程.git
Kotlin的优点: 和Java能够互相调用; 函数式语言; function purity; 高阶函数(函数能够做为参数或返回值); 不可变性(val); Null-safety; Anko; Kotlin Android extensions(移除了ButterKnife); 还有对初学者很友好, 能够摆脱不少第三方的依赖, 函数扩展等等优点.github
做者一年多之前写过一个这个文章: RxJava: Android MVVM App structure with Retrofit, 介绍MVVM结合Retrofit和RxJava的App架构模式. 此篇文章是一年后做者对此的改进.编程
主要内容有:redux
.zip()
. 顺序链接不一样的网络请求 -> .flatMap()
, .andThen()
.AsyncProcessor
.这篇文章鼓励你分享你的知识, 经验, 问题及解决方法, 不管是经过演讲仍是写出来的方式.c#
介绍了Android中传感器的使用.网络
如何给你的App写简单的单元测试.架构
这是系列文章中的一篇, 继续讲Reductor library – Redux的Android版实现.
这篇文章结合例子将如何组合使用以及用@CombinedState来生成代码.
本文探讨进程被杀死有可能致使的种种问题.
你的Android应用若是在paused或者stopped状态, 那么它任什么时候候都有可能会被系统杀死. 这时候你的Activity, Fragment和View状态将被保存, 当你回到应用的时候, 系统会从新启动进程, 从新建立Activity, 存储的状态会在bundle中返回.
这个过程存在一个问题: 整个进程都被杀死了, 全部单例(或application scope的对象), 临时数据, 还有retained Fragment中的数据, 这些全部都会处于一种全新建立的状态, 但惟有一个不一样, 一些在bundle中存储的状态被恢复出来了.
这样有可能会致使一些异常, 好比你的界面想要恢复一种状态, 可是数据已经被清空了.
如何测试这种状况呢?
相关问题信号
onSaveInstanceState()
中保存可是你却依赖的状态这些问题没有惟一的解决方案, 取决于你的应用.
做者把本身的一个布局改成用Kotlin的Anko, 而后测试性能.
好处是:
做者用的测试性能的工具是: AndroidDevMetrics
在Android上的后台工做, 你能够选择Alarm Manager
, Job Scheduler
或GCM Network Manager
.
为了帮开发者从每种实现中抽象出来, Evernote开源了一个库: Android Job. 本文介绍了这个库如何使用.
做者他们的应用中有VectorDrawable的版本兼容问题, 用support library中的Compat版本也很差使, 因而他们在旧版本决定使用自动生成的png.
而后发现了生成png的颜色设置问题, 在旧版本生成的图片用的是fillColor而不是tintColor. 把fillColor设置成想要的颜色便可.
一个应用, 展现了Depth-LIB-Android-的功能.
在ImageView
和RelativeLayout
底部加上曲线的库.
长按出现弹框的库.
一个Switch Button的库, 带有更多自定义扩展功能.
这个库给View加上深度/厚度.