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语句两种办法.

fallbackToDestructiveMigrationaddMigrations

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的更多相关文章

  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. 牛顿插值法及其C++实现

    h1 { margin-bottom: 0.21cm } h1.western { font-family: "Liberation Sans", sans-serif; font ...

  2. shell script测试命令(test)

    shell script测试命令(test) test命令 检查系统上面某些文件或者相关的属性 常用选项 test -e :检查该文件名是否存在 例:检查/dmtsai是否存在 [root@local ...

  3. LINUX 笔记-VIM常用命令整理

    1.进入insert模式 o:当前行后 O:当前行前 r:替换当前字符 R:替换当前字符直到ESC 2.删除命令 #dw:删除#个word d^:删除至行尾 d$:删除至行首 3. u:撤消 ctrl ...

  4. C++继承(07)

    继承 通过特殊化已有的类来建立新类的过程,叫做“类的派生”,原来的类叫做“基类”,新建立的类则叫做“派生类”.另一方面,从类的成员角度看,派生类自动地将基类的所有成员作为自己的成员,这叫做“继承”.基 ...

  5. 解决phpstorm ftp自动保存文件问题

    初次使用phpstorm, 1.配置ftp时,远程文件要用/ftp用户名/文件夹名: 2.由于版本管理的原因(猜测),直接从本地原有文件修改时各种办法都无法上传,结果从服务器上下载一份再修改,解决这个 ...

  6. angular指令中的preLink函数和postLink函数

    指令模板选项有complie和link两个字段,两者之间存在如下关系: 当compile字段存在时,link字段将被忽略,compile函数的返回值将作为link字段. 当compile不存在,lin ...

  7. 18个超有趣的SVG绘制动画赏析

    SVG作为时下比较新颖的技术标准,已经建立了很多基于SVG的前端项目.由于SVG在绘制路径上非常灵活,我们将很多网页上的元素使用SVG来绘制而成,有各种人物.小图标.小动画等等.今天我们收集了18个非 ...

  8. Ionic3 创建应用后,目录结构

    ionic start myApp blank (空项目) hooks --编译cordova时自定义的脚本命令,方便整合到我们的编译系统和版本控制系统中 node_modules --node各类依 ...

  9. JQ编写楼层效果

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...

  10. C++获取基类指针所指子类对象的类名

    我们在程序中定义了一个基类,该基类有n个子类,为了方便,我们经常定义一个基类的指针数组,数组中的每一项指向都指向一个子类,那么在程序中我们如何判断这些基类指针是指向哪个子类呢? 关键字 typeid, ...