Android Weekly Issue #290

December 31st, 2017

Android Weekly Issue #290

本期内容包括介绍Kotlin逆变协变的一篇(虽然没说清楚,但我补充了),IoT相关制作MIDI Controler的Part two,以及比较炫酷的Shared Element Reveal动画,以及LiveData与DataBinding相关,Kotlin扩展Fragment/Activity方法做测试,Rx逐条打Log等等.

ARTICLES & TUTORIALS

Lessons learned implementing Redux on Android

文章介绍了模仿Web的Redux,实现其kotlin版本,实现Reducer,通过State与Action来驱动状态的转换.

State -> UI -> Action -> Reducer -> Store.

In and out type variant of Kotlin

文章介绍了Kotlin中泛型添加in与out的意义.

实际上in作为参数表示的是consume方,可以将super type可以赋值给sub type.类似于Java里面的<? super X>,其作为泛型的Collection只能add数据,无法get访问内部成员.

而out作为返回值表示producer,与in相反,它可以将sub type赋值给super type.类似于Java中的<? extends X>,其作为反省的Collection只能get访问,不能add数据.

Building a distributed MIDI Controller with Android Things and Nearby API #2

IoT的MIDI播放器第二篇,感兴趣的可以仔细看.

Meaningful Motion: Circular Reveal & Shared Elements

在Shared Element Transaction Animation的基础上加上了ViewAnimationUtils#createCircularReveal实现Reveal效果. 即Activity/Fragment跳转过程中Shared Element先移动再充满Container.

RxAndroid: Handle Interrupt With “switchMap”

通过switchMap将Happy与Unhappy的pass都加进来(Observer.merge)进行处理,switchMap与flatMap的区别是它内部只有一个active的observer,简单的来说,它不会对转换后的Observable进行merge,而是在新的来到的时候cancel之前的.

The curious case of haunting fragments

作者研究Fragment addToBackStack以及pop之间的事情,但是作者貌似没用对...

所以之后他居然推荐用Activity了,说Fragment太难用...

Unit testing protected lifecycle methods with Kotlin

作者写了个工具库,给Activity的生命周期方法都写了扩展,这样就可以直接通过对象调用了...可以用来写Activity的单元测试.

Kotlin Coding Conventions

Kotlin最新的code style,基本跟Java类似,但这里比较详细,包括什么时候换行,什么时候single line等等.

Lessons from my first multi-platform Kotlin project

作者对Kotlin Multiple Platform进行总结,首先platform层应该根据js/jvm/native进行划分,而不是操作系统,操作系统的划分应该属于之下的regular层,而最上层为common层.

MVP的应用非常重要,其次是下层可以访问上层的一切,上层需要访问下层应该通过expected与actual来实现.

Android Architecture Components LiveData with Data Binding

Google最新的Databinding已经支持LiveData了,通过与LiveData进行绑定,可以保证UI在后台的时候不会因为数据变化而刷新,避免了没有必要的操作.

Briefly about RxJava Logging

作者介绍了通过doOnEach (Flowable)以及doOnEvent(others)来了解Observable的状态,帮助你添加新的feature中debug遇到的问题,不至于整个Rx Chains出现问题而不知道问题处在哪里.

LIBRARIES & CODE

TableView

很项强大TableView,基于RecyclerView,用来显示复杂数据.有点类似数据库表格.

retrofit2-kotlin-coroutines-adapter

Jake Warthon写的支持Kotlin Coroutine的Retrofit2, 返回Deferred类型.

RxTest

像这个来测Rx的Observable,是不是很牛.

Observable.just("Hello RxTest!")
.test {
it shouldEmit "Hello RxTest!"
it should complete()
it shouldHave noErrors()
}

MockK

支持Koltin DSL的mock库, 叫mockk....

KotlinAndroidViewBindings

其实感觉跟ViewBinding没多大关系, 主要是实现了Delegate,可以取代findViewById,Butterknife以及Kotlin Android Extension.

直接通过by bindWithXX()来找到View.

litho-kotlin

Facebook litho的kotlin dsl support.

kotlin-math

支持很多vector计算的lib,帮助简化graphic math.

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

  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 #310 (Google IO特别篇)

    Android Weekly Issue #310 May 20th, 2018 Android Weekly Issue #290 本期既有本次Google IO对于Play Console的更新简 ...

  8. Android Weekly Notes Issue #236

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

  9. Android Weekly Notes Issue #235

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

随机推荐

  1. 在Delphi中应用AOP实现日志功能

    AOP现在很火,网上有这许多支持AOP的框架,对于Delphi来说同样也有MeAOP.不过觉得这些框架太复杂了. 现在有一个系统,基本上都快结束了,整体上当然是没有采用什么AOP的框架.对于这样的系统 ...

  2. .NET中XML 注释 SandCastle 帮助文件.hhp 使用HTML Help Workshop生成CHM文件

    一.摘要 在本系列的第一篇文章介绍了.NET中XML注释的用途, 本篇文章将讲解如何使用XML注释生成与MSDN一样的帮助文件.主要介绍NDoc的继承者:SandCastle. .SandCastle ...

  3. ANT安装及配置

    首先,到http://ant.apache.org/找到合适的版本下载. 其次,讲下载的zip包解压,得到的目录拷贝到硬盘,如C:\apache-ant-1.9.4 其三,设置环境变量 ANT_HOM ...

  4. JavaScript学习与实践一

    一.JavaScript数组 创建JavaScript数组有两种方式 方式一: var cars=new Array(); cars[0]="Audi"; cars[1]=&quo ...

  5. eclipse中文件文件夹高速定位,打开文件所在文件夹,在资源管理器中查看

    viewFile.bat (打开选中的文件获取目录) Explorer/e,/select,%1 viewjava.bat (打开选中的文件名称相应的.java文件) @echo off set ca ...

  6. nginx源代码分析--监听套接字的创建 套接字的监听 HTTP请求创建连接

    作为一个webserver,那么肯定是有监听套接字的,这个监听套接字是用于接收HTTP请求的,这个监听套接字的创建是依据配置文件的内容来创建的,在nginx.conf文件里有多少个地址就须要创建多少个 ...

  7. Linux ps 命令查看进程启动及运行时间

    引言 同事问我怎样看一个进程的启动时间和运行时间,我第一反应当然是说用 ps 命令啦.ps aux或ps -ef不就可以看时间吗? ps aux选项及输出说明 我们来重新复习下ps aux的选项,这是 ...

  8. SVN客户端忽略无关文件

    修改前请先备份文件 ~/.subversion/config. 1,打开Terminal,输入命令: $ open ~/.subversion/config   2,在打开的文件中寻找:`global ...

  9. 一种把dll放在不同目录的巧妙方法

    想必C#的开发者都遇到过这个问题,引用的dll都放在根目录下,随着项目的日益增大,根目录下充满了各种各样的dll,非常的不美观. 如果能够把dll按照想要的目录来存放,那么系统就美观多了,以下是我常用 ...

  10. 显存不够----ResourceExhaustedError (see above for traceback): OOM when allocating tensor with shape[4096]

    ResourceExhaustedError (see above for traceback): OOM when allocating tensor with shape[4096] 类似问题 h ...