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. Java的日志模块

    目前主流的是是logback和log4j2,它们底层实现用的都是slf4j,通过slf4j-api调用 使用指定类初始化日志对象,在日志输出的时候,可以打印出日志信息所在类如:Logger logge ...

  2. MySQL开发36条军规

    转载地址:http://blog.itpub.net/22664653/viewspace-723506/ 写在前面的话: 总是在灾难发生后,才想起容灾的重要性: 总是在吃过亏后,才记得曾经有人提醒过 ...

  3. mongodb模拟生产环境的分片集群

       分片是指数据拆分 将其分散在不同的机器上的过程,有时候也叫分区来表示这个概念.将数据分散到不同机器上 不需要功能强大的计算机就可以储存更多的数据,处理更大的负载.        几乎所有的数据库 ...

  4. mysql root密码忘记最快方法

    在my.cnf [mysqld]栏添加 skip-grant-tables 然后重启/etc/init.d/mysqld restart mysql ##select password('新密码') ...

  5. hdu 4372 第一类斯特林数

    #include <cstdio> #include <iostream> #include <algorithm> #include <queue> ...

  6. jenkins构建一个python项目

    Jenkins发布后端python代码 “系统管理”“管理插件”“已安装” 检查是否有“Git plugin”和“Publish Over SSH”两个插件,如果没有,则需点击“可选插件”,找到它 ...

  7. PM2.5

    http://baike.baidu.com/view/1423678.htm PM2.5是指大气中直径小于或等于2.5微米的颗粒物,也称为可入肺颗粒物.虽然PM2.5只是地球大气成分中含量很少的组分 ...

  8. Nginx在windows2003下的使用 PHP

    nginx真正能够发挥其良好的负载能力的,是在linux下. 我们在windows下搭建好环境,测试开发使用.强烈建议在linux下开发的. ---- 下载nginx 访问www.nginx.org, ...

  9. Maven自动生成web.xml配置文件

    没有这个文件会报错误的: 1. 2.在Maven下面设置这个:  src/main/webapp OK生成了

  10. Attribute "resultType" must be declared for element type "insert".

    这是mybatis插入数据库之后出现的问题,至于为什么出现这个问题,是因为插入的时候你照抄了查询的语句,插入的时候只有id属性和parameterType属性,并没有“resultType”属性,要注 ...