Android Weekly Issue #231

November 13th, 2016
Android Weekly Issue #231

Android Weekly阅读笔记, Issue #231, 本期内容包括: MVP中的View做成passive响应式的, 返回Observable; Android Studio使用技巧; BottomNavigationView的使用; App tracking; Kotlin; 用Kotlin实现的Filter Animation效果; Dagger2的ScopeSubcomponent使用; Espresso测试中mock dagger注入; Android和Java中的Reference和内存泄露; MVVM + RxJava构架实际使用的经验分享; 还有TV以及Audio相关的内容等.

ARTICLES & TUTORIALS

Reactive Views: retrying errors

作者他们的app近来重构采用了RxJava和Clean Architecture, 进而想要使用passive view, 然后他们就发现了关于Reactive Views的一系列文章, 尤其是这一篇: RxUi: Talking to Android View layer in a Reactive way.

他们的主要工作就是把View也改成响应式的, 即View返回Observable. 在Presenter初始化的时候和View的Observable绑定, 所以事件发生的时候会trigger到presenter.

这项工作主要需要依赖于RxBinding, 由于RxBinding没有提供长按RecyclerView item的bind, 所以他们自己写了一个.
Snackbar也是: SnackbarActionOnSubscribe.

作者采用这种方式重构了他们的代码, 使得view变成完全passive的.

并且其中还有一个retryWhen()使用的解释: RxJava's repeatWhen and retryWhen, explained.

50 Android Studio Tips, Tricks & Resources

设置Logcat的颜色; 使用Live Templates; 快捷键使用; Android Studio的插件; 还有一些资源分享.

BottomNavigationView

Design support library 25.0.0推出了BottomNavigationView, 本文介绍其使用.

The key concepts of app tracking for developers

这篇文章主要讲移动应用数据追踪和分析的几个原则:

  • 为什么你需要tracking;
  • 什么时候需要收集数据;
  • 用什么Analytics tool;
  • 用户隐私相关;
  • 代码设计模式以及挑战;
  • 如何debug和测试输出;
  • 如何分析数据;

Why You Must Try Kotlin For Android Development?

为什么要使用Kotlin来做Android开发? 简洁, 安全, 灵活, 和Java可互相操作.

文中介绍了Null Safety, Smart Casting, Default Arguments, Named Arguments, Functional Programming, Concise Code.

Implementing Filter Animation in Kotlin

作者他们搞了一个应用FIT, 为女性IT工作者提供社区和交流平台, 想要成为Quora加上Linkedin.

为了让用户选择分类和过滤器tag进行搜索, 他们开发了一个组件: SearchFilter.

文中讨论了这种设计的动画实现, 库是用Kotlin写的.

DI 101 — Part 3

本文讲什么是Scope, 如何定义Scope, 如何使用Scope和@Subcomponent.

Subcomponent会继承父类的所有bindings.

作者定义了一个Activity的Scope, 然后定义了一个Subcomponent专门给这个Activity用, 这个Subcomponent只在这个Activity的生命周期里存活. 代码例子比较简洁易懂.

How Dagger 2 Helps In Android Espresso Tests

这篇文章介绍了如何在写Espresso测试的时候, 使用一个测试用的Dagger Component.

Finally understanding how references work in Android and Java

这篇文章讲了Java中的引用类型和Android中的内存泄露.

Java中的引用类型:

  • Strong reference
  • WeakReference
  • SoftReference
  • PhantomReference

作者详细介绍了每一种引用并用例子说明了使用场景.

MVVM + RxJava: Learnings

作者他们的新闻应用采用MVVM + RxJava架构, 本文总结了他们遇到的问题和学到的两点:

  1. 暴露状态, 而不是事件;
  2. 所有的事情都应该通过ViewModel.

Adding TV Channels to Your App with the TIF Companion Library

TV Input Framework(TIF)和Android TV让第三方应用开发者可以很容易地创建自己的电视频道.

Background Audio in Android With MediaSessionCompat

Android support library中的MediaSessionCompat使用, 以及如何用它来做一个背景音乐.

LIBRARIES & CODE

FirebaseUI-Android

FirebaseUI for Android — UI Bindings for Firebase.

ChipsLayoutManager

一个自定义的RecyclerView的layout manager, 流式地显示很多小块的TextView.

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

  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. webpack之傻瓜式教程

    接触webpack也有挺长一段时间了,公司的项目也是一直用着webpack在打包处理,但前几天在教新人的情况下,遇到了一个问题,那就是:尽管网上的webpack教程满天飞,但是却很难找到一个能让新人快 ...

  2. StringMVC 中如何做数据校验

    步骤一:引入四个jar包 步骤二:注册类型转换器 <context:component-scan base-package="cn.happy.controller"> ...

  3. ZIP压缩算法详细分析及解压实例解释

    最近自己实现了一个ZIP压缩数据的解压程序,觉得有必要把ZIP压缩格式进行一下详细总结,数据压缩是一门通信原理和计算机科学都会涉及到的学科,在通信原理中,一般称为信源编码,在计算机科学里,一般称为数据 ...

  4. iOS可视化动态绘制八种排序过程

    前面几篇博客都是关于排序的,在之前陆陆续续发布的博客中,我们先后介绍了冒泡排序.选择排序.插入排序.希尔排序.堆排序.归并排序以及快速排序.俗话说的好,做事儿要善始善终,本篇博客就算是对之前那几篇博客 ...

  5. MVVM TextBox的键盘事件

    MVVM下RichTextBox的键盘回车事件设置为发送,不是回车 xmlns:i="http://schemas.microsoft.com/expression/2010/interac ...

  6. 用WebRequest +HtmlAgilityPack 从外网抓取数据到本地

    相信大家对于WebRequest 并不陌生,我们在C#中发请求的方式,就是创建一个WebRequest .那么如果我们想发一个请求到外网,比如国内上不了的一些网站,那么该怎么做呢? 其实WebRequ ...

  7. 微信小程序中利用时间选择器和js无计算实现定时器(将字符串或秒数转换成倒计时)

    转载注明出处 改成了一个单独的js文件,并修改代码增加了通用性,点击这里查看 今天写小程序,有一个需求就是用户选择时间,然后我这边就要开始倒计时. 因为小程序的限制,所以直接选用时间选择器作为选择定时 ...

  8. Syscall,API,ABI

    系统调用(Syscall):Linux2.6之前是使用int0x80(中断)来实现系统调用的,在2.6之后的内核是使用sysentry/sysexit(32位机器)指令来实现的系统调用,这两条指令是C ...

  9. Node.js入门(一)

    一.Node.js本质上是js的运行环境. 二.可以解析js代码(没有浏览器安全级的限制): 提供系统级的API:1.文件的读写 2.进程的管理 3.网络通信 三.可以关注的四个网站: 1.https ...

  10. BPM嵌入式流程解决方案分享

    一.需求分析由于企业业务的独特性或者企业高层独特的管理思想,很多客户选择了自行开发业务系统的方式来实现独有的竞争力. 这类信息系统通常经过了多年的开发,伴随着企业的发展一直在不断优化,与企业的业务非常 ...