September 24th, 2017

Android Weekly Issue #276

本期内容包括LifeCycle与Architecture的相关文章,以及新的JSON解析库Moshi的介绍,还有

ConstraintLayout的一些特性,还包括一个加速你Debug的小技巧,喜欢数据库的也不容错过,有介绍Realm,Room,ObjectBox,Anko SQLite等等的对比与分析的文章哦.

ARTICLES & TUTORIALS

Is your Android Library, Lifecycle-Aware?

还在为必须在固定的生命周期里处理你的init与destroy吗, 文章介绍了通过google最新的LifeCircle库来实现自主监听.

你只需要引入相关依赖.

implementation "android.arch.lifecycle:runtime:1.0.0"
annotationProcessor "android.arch.lifecycle:compiler:1.0.0-alpha9-1"

然后让你需要关注生命周期的类继承于LifecycleObserver.

这样你就可以通过注解来监听生命周期了.

@OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
or
@OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
..and so on

当然别忘了需要注册.

getLifecycle().addObserver(LifecycleObserver);

getLifecycle().removeObserver(LifecycleObserver);

Creating a Custom Type Adapter for Moshi

文章介绍了如何给JSON解析库Moshi添加一个自定义的Adapter来完成非1:1的Json2Object的解析, 主要逻辑在于实现了@FromJson的方法.

class StageAdapter {
@FromJson fun fromJson(jsonReader: JsonReader, delegate: JsonAdapter<Stage>): Stage? {
val value = jsonReader.nextString()
return if (value.startsWith("in-progress")) Stage.IN_PROGRESS else delegate.fromJsonValue(value)
}
}

把所有的以in-progress开头的都转换成Stage.IN_PROGRESS.

Register: Better In App Billing Testing on Android

介绍了开发的一个框架Register用来帮助使用Google In-App Billing开发应用的人来进行测试, mock掉Server.

原因是Google API必须是内嵌在Play Store上线的应用里, 去订阅一个已经上线的应用, 而且必须使用开发上号来进行购买测试, 并且重复测试也受到限制, 因为取消之前的购买是唯一的方式, 但是需要等很久状态才会被Reset.

ConstraintLayout - Guidelines, Barriers, Chains and Groups

介绍了ContraintLayout的一些新的特性, 包括Guidelines, Barriers, ChainsGroups.

Repository layer using Room and Dagger 2

文章介绍了如何搭建MVP中的M层, 源自Google的MVP套路, Presenter持有一个Repository,而Repository里面持有的对应数据的DataSource,用来真正操作数据的IDUQ, 而DataSource内部是通过Room Persistence来实现的.

Stop testing on emulators - Access Real Devices

一个云端真机测试的广告.

Realm, ObjectBox or Room. Which one is for you?

文章介绍了根正苗红新秀Room Persistence, 成熟稳重Realm, 与没什么人听过的ObjectBox三个数据库的优劣.

  • 如果你关心安装包体积与方法数, 用Room
  • 如果你关心速度与效率,那么用ObjectBox
  • 如果你嫌ObjectBox不够成熟稳定,那就使用七年老大哥Realm

Making the most out of Android Studio Debugger

常常调试的时候,你只想看看程序里某个地方运行时候的值,或者想测试新加的一段逻辑是否正常(可以Debug时跑在Evluate的环境里),你完全可以不编译程序,但是默认的情况下你Ctrl+R运行却需要等Gradle跑好久,非常恼火.

文章介绍了个小技巧, 自己创建一个Build选项, 让IDE不再去做Gradle编译, 只是单纯运行程序,想知道怎么弄么,进去看看就知道了.

Kotlin Testability – Part 2

文章继续上次的套路,将同样的方法运用在一些Android Framework组件上也是可以的.

开启

 testOptions {
unitTests.returnDefaultValues = true
}

后相关Framework的方法也会调用Stub的.

作者最后强调使用Factory封装接口是因为有多个需要Mock的对象,如果只有一个第三方组件需要Mock,我们可以直接通过internal primary用于测试与secondary用于production的办法来玩.

Building a Guitar Chord Tutor for Actions on Google: Part Two

继续了上次的项目,通过Actions on Google实现吉他和弦教程APP

Stress-free SQLite with Anko

推荐了一个SQLite的包装库,纯Kotlin的,叫做Anko SQLite, 看了下官网居然还有一个叫Anko Layout的库,使用办法都是Lambda.

database.use {
// 增删改查
}

From design to android, part 2

介绍了由设计入手来做Android动画的思想,介绍了通过Skech+Shape Shifter制作Vector图片,然后通过Android的AnimatedStateListDrawable设置给ImageView当资源,最后通过ImageView#setImageState来控制显示哪个State下的Vector动画

LIBRARIES & CODE

RxLifecycle

关于流式控制逻辑在相应的生命周期里完成,防止内存泄露的一个库.

Anko

一系列Kotlin的框架,让Android开发更简单更快捷,挺厉害的样子.

Register

帮助测试PlayStore Billing的一个框架

Moshi

解析JSON的一个库,通过实现一个Adapter可以轻松做原始数据到Model之间的转换.

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

  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. 性能测试报告模板 V1.0

    1. 测试项目概述与测试目的 1.1 项目概述 本部分主要是针对即将进行压力测试的对象(接口.模块.进程或系统)进行概要的说明,让人明白该测试对象的主要功能与作用及相关背景. 1.2 测试目标 简要列 ...

  2. AngularJS中Route例子

    代码:https://files.cnblogs.com/files/xiandedanteng/angularJSRouteSample.rar 点击‘首页’后: 点击‘电脑’后: <!DOC ...

  3. eclipse 如何把java项目转成web项目

    经常在eclipse中导入web项目时,出现转不了项目类型的问题,导入后就是一个java项目. 解决步骤: 1.进入项目目录,可看到.project文件,打开. 2.找到<natures> ...

  4. UML的基本图(三)

     An artifact diagram shows the physical constituents of a system on the computer. Artifacts includ ...

  5. NightWatchJS(转)

    关于Nightwatch? Nightwatch.js是一个测试web app和web 站点的自动化测试框架, 使用Node.js编写, 基于Selenium WebDriver API. 它是一个完 ...

  6. java面试笔记(2019)

    1. 堆啊,栈啊,内存溢出原因 2. Dubbo原理 3. Reids线程 4. 线程池安全 5. linux查看线程命令 6. ABA

  7. OpenCV视频读取播放,视频转换为图片

    转载请注明出处!!! http://blog.csdn.net/zhonghuan1992 OpenCV视频读取播放,视频转换为图片 介绍几个有关视频读取的函数: VideoCapture::Vide ...

  8. SpringBoot启动流程分析(四):IoC容器的初始化过程

    SpringBoot系列文章简介 SpringBoot源码阅读辅助篇: Spring IoC容器与应用上下文的设计与实现 SpringBoot启动流程源码分析: SpringBoot启动流程分析(一) ...

  9. conda清华源 pip 清华源ubuntu 清华镜像 R代理以及包的安装

    vim     ~/.condarc channels: - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/menpo/ - https:// ...

  10. MagicalRecord使用教程【转载】

    原文地址:http://www.ithao123.cn/content-96403.html 下面是在xcode5.1下ARC环境中的使用教程 1. 将 MagicalRecord 文件夹拖入到工程文 ...