Android Weekly Notes Issue #285
November 26th, 2017
Android Weekly Issue #285
本周包含好几篇Kotlin的文章,如通过Property Delegate实现SharedPreference的自动读写,Coroutines编写Weather应用的终结篇,还有关于如何写好代码的方法论的Tips,以及MVI的全面介绍,如果不喜欢Mosby的approach,可能这个作者从头到尾实现的更有看头.
当然如果想了解Android最流行的pipeline如何开发,可以去看一篇关于Devops的文章.对代码感兴趣的,看看MVI也是不错的.
ARTICLES & TUTORIALS
Shrinking APKs, growing installs
文章通过数据分析每提升6M的apk大小,就会损失1%的用户,原因大多因为流量.
文章还拿出了google内部的数据图,发现北美使用的应用大,东亚非洲使用的小,殊不知天朝不用google play...
Multi-currency support in Java | Drivy Engineering
一个简单的支持数字转货币格式的库,包括同种货币在不同国家不同的显示方式.
The Contract of the Model-View-Intent Architecture
作者对MVI进行了详细的分解,实现了MVI不同模块的Contract,并分析了各个模块的基本职责.
整体的思路大致如下,形成一个回路:
View -> Intent --(intent to action)--> Action --(processor)--> Result --(reducer)--> State --(render)--> View
Function references in Kotlin: use functions as lambdas everywhere
文章讲解了Function Reference (::function
)的使用,可以作为lmbda当参数传递,并且生成的bytecode里面会少一个形参的临时变量的创建,相当于把lambda表达式的回调参数inline了.
Onboard your users with Lottie of Spritz
文章介绍了作者自己弄的一个库Spritz,来做引导画面,将ViewPager于AirBnB的LottieAnimationView结合起来,可以通过swipe来触发动画,或者自动触发.
Room Migration
文章介绍了Room如何做DB Migration,与一般的数据库相同,其提供了直接Drop&ReConstruct以及提供相应的Migeration语句两种办法.
fallbackToDestructiveMigration
与addMigrations
Simple but painful steps for writing a better code
作者介绍了几条写更好的代码的原则.
- 不要在Class内部再new新的object,应该通过构造注入.
- 不要依赖于单例,如果有可直接通过构造传入.
- 不要再取Manager/Processor/Hanlder之类的类名,这样会使这个类加入越来越多不太相关的东西.
- 不要无脑的继承,有时候组合也挺好.
The Art of Android DevOps – Undabot
文章介绍了什么是Android DevOps,其实这些Work我们都在做,只是没有独立出来这个Role罢了,其工作内容包括:
- CI/CD
- Automated Test (UT, InstrumentTest, PIT)
- Code check (Findbugs, checkstyle, PMD)
- Deploy (fastlane)
9 RxJava 2 Migration Learnings At Runtastic
介绍了九条从RxJava1升到RxJava2应该注意的东西,比较值得注意的是在测试的时候可以通过Observable.test转换后进行assert,还有应该推广使用Completion
,Maybe
等在恰当的场合,还有不能滥用Flowable
除非你有背压需求.
Kotlin: Contexts & SharedPreferences
作者通过Property Delegation写了个SharedPreferenceDelegate,这样需要储存的变量只需要通过by
交给这个delegate就可以完成数据的自动读写.
如
var value: Int by bindSharedPreference(context, KEY, DEFAULT_VALUE)
Clean-Code App with Kotlin and Architecture Components — Part 3
使用Kotlin Coroutines优化程序的最后一个Part,主要是UI部分,结合了Architecture Components的ViewModel与LiveData.
对于Coroutines,作者的看法是它是用来与RxJava竞争的,帮助大家接触Callback Hell,而且它也可以跟RxJava结合使用.
其核心思想就是对于suspendable function的理解,帮助实现看似同步的异步世界.
Kotlin From The Trenches
一片宏观介绍Kotlin如何牛逼的文章,Android的Java被锁定在了1.6,即便有了sugar,还是不能完全支持1.8,Kotlin应运而生.
至于Kotlin的优势,这里不做阐述了,类似的文章太多了,建议大家都去用一下,因为只有真正使用了,才能有比较大的进步.
LIBRARIES & CODE
spritz
做一个基于ViewPager的引导界面.
Droid-Snippet
一个AS的查件,有点像代码宝典,内置了各种Util类的方法,可以一键呼出,复制粘贴分分钟.包含Network,Image,File,Permission,Service等等等等....
koin
之前有介绍过一个Kotlin的Inject框架,相较于Dagger还是有很大的优势,至少配置起来容易.
Android Weekly Notes Issue #285的更多相关文章
- Android Weekly Notes Issue #230
Android Weekly Notes Issue #230 November 6th, 2016 Android Weekly Issue #230. Android Weekly笔记, 本期内容 ...
- Android Weekly Notes Issue #227
Android Weekly Issue #227 October 16th, 2016 Android Weekly Issue #227. 本期内容包括: Google的Mobile Vision ...
- Android Weekly Notes Issue #237
Android Weekly Issue #237 December 25th, 2016 Android Weekly Issue #237 这是本年的最后一篇issue, 感谢大家. 本期内容包括 ...
- Android Weekly Notes Issue #229
Android Weekly Issue #229 October 30th, 2016 Android Weekly Issue #229 Android Weekly笔记, 本期内容包括: 性能库 ...
- Android Weekly Notes Issue #221
Android Weekly Issue #221 September 4th, 2016 Android Weekly Issue #221 ARTICLES & TUTORIALS And ...
- Android Weekly Notes Issue #219
Android Weekly Issue #219 August 21st, 2016 Android Weekly Issue #219 ARTICLES & TUTORIALS Andro ...
- Android Weekly Notes Issue #236
Android Weekly Issue #236 December 18th, 2016 Android Weekly Issue #236 本期内容包括: Google的物联网平台Android ...
- Android Weekly Notes Issue #235
Android Weekly Issue #235 December 11th, 2016 Android Weekly Issue #235 本期内容包括: 开发一个自定义View并发布为开源库的完 ...
- Android Weekly Notes Issue #234
Android Weekly Issue #234 December 4th, 2016 Android Weekly Issue #234 本期内容包括: ConstraintLayout的使用; ...
随机推荐
- vim中SnipMate 和 YouCompleteMe 插件触发键 tab 冲突
花了好几天废了九牛二虎之力终于在win下把ycm插件装上了 然而在配置插件的时候发现snipmate插件与youcompleteme插件会发生tab键冲突 而ycm比较调,直接使snipmate插件完 ...
- Zookeeper 笔记-应用场景
应用场景:数据发布,订阅:分布式应用配置项:分布式计数器:统一命名服务:状态同步服务:集群管理:Master选举:分布式锁:定时任务争夺:分布式队列:分布式协调通知 特点:顺序一致性,原子性,单一视图 ...
- Linux下Crontab定时任务的使用教程 以及 无法执行定时任务的解决方案
前言 本文学习思路:Linux的corntab定时任务的使用教程 --> 定时任务无效的解决方案 Linux的corntab定时任务的使用教程 1. 首先,输入命令 打开crontab定时 ...
- 笔记-测试崩溃之memcpy_s
昨天晚上提测,今天早上测试发来贺电,程序崩溃!!!!!! 而问题出在memcpy_s errno_t memcpy_s( void *dest, size_t numberOfElements, co ...
- ASP.NET Core中间件实现分布式 Session
1. ASP.NET Core中间件详解 1.1. 中间件原理 1.1.1. 什么是中间件 1.1.2. 中间件执行过程 1.1.3. 中间件的配置 1.2. 依赖注入中间件 1.3. Cookies ...
- Can you answer these queries?
Can you answer these queries? Time Limit:2000MS Memory Limit:65768KB 64bit IO Format:%I64d & ...
- gbdt的面试要点总结-上篇
1.简介 gbdt全称梯度下降树,在传统机器学习算法里面是对真实分布拟合的最好的几种算法之一,在前几年深度学习还没有大行其道之前,gbdt在各种竞赛是大放异彩.原因大概有几个,一是效果确实挺不错.二是 ...
- Dapper.Contrib——更加优雅地使用Dapper进行增删改查
简介 Dapper是介于Entity framework与ADO的折中选择.既满足手写查询的高性能需求,又简化了数据库对象映射为内存对象的繁杂工作.Dapper.Contrib是对Dapper的进一步 ...
- HTML5新特性之WebRTC[转]
原文:http://www.cnblogs.com/jscode/p/3601648.html?comefrom=http://blogread.cn/news/ 1.概述 WebRTC是“网络实时通 ...
- Java GC算法 垃圾收集器
GC算法 垃圾收集器 概述 垃圾收集 Garbage Collection 通常被称为"GC",它诞生于1960年 MIT 的 Lisp 语言,经过半个多世纪,目前已经十分成熟了. ...