Android Weekly Notes Issue #278
October 8th, 2017
Android Weekly Issue #278
本周内容主要包括两篇涉及Kotlin高级用法的文章,RXJava解决本地与远端存储的冲突,应该如何选择模拟器来测试,Paging Library的使用等等.
代码部分值得看的是Kolin相关的文章.
ARTICLES & TUTORIALS
MidiPad – Tricks With Kotlin And Architecture Components
文章介绍了如何利用Kotlin的特性来结合Google Architecture Component进行开发.
其中有三个Trick
- 利用lazy {} 来做延迟加载Field变量, 并重写去除了其本身的线程安全,提升速度
- 利用by实现delagate,把SpinnerAdapter的一部分功能交给ArrayAdapter来实现,自己只需要关注其特有回调即可.
- 给Activity添加Extension,将
ViewModelProvider.Factory与其create封装其中,使得创建ViewModel简单又Lazy.
Database with Room using RxJava
文章比较简单,主要就是在Room的Dao定义的时候,query的返回值可以直接声明为Flowable,这样查询的时候就react了,可以轻松的讲查询放在io线程,写删改等操作数据库的方法直接用RxJava直接封装即可,文章用的Completable
Create a Clean-Code App
文章比较前沿,使用Architecture Component开发了一个天气应用,亮点在于用Kotlin实验室的Kotlin Coroutines取代了RxJava,核心逻辑在用suspendCoroutine把Retrofit的异步操作转换为suspend function.相关Coroutine的Doc可以在这里找到.
12 Practices every Android Development Beginner should know
看名字就知道了,一些小常识,但是这个是Part1,只有10条,感兴趣的可以看看.
Check out local storage and RxJava backpressure
文章通过使用RxJava的groupBy与backpresure来帮助我们更好的做一个同步的feature,保证远端与Local保持一致.
简单的说就是对同一个item的操作标注一个ID,本地把Add与Remove操作都记住,然后通过groupBy配合backpresure每次拿一个最新的Event,完成之后再继续拿,这样中间就会省掉很多重复的操作,大致以最后一次为准.
不过我觉得如果还有Update操作,只拿后压后最后一个Event来处理了就不对了...
Demystifying Advanced Kotlin Concepts
介绍了不少Kotlin高级理念,如Lambda Exstension,inline与infixfunction,等等.
Genymotion vs Android Emulator
通过数据对比,得出X86 with google api的模拟器性价比最高.
[Kotlin Function Literal with Receiver
](https://tech.io/playgrounds/6973/kotlin-function-literal-with-receiver)
介绍了Kotlin的Lambda Exstension特性, 函数本体作为参数被访问,并函数本体内可以访问函数的Receiver.
Architecture Components: Paging Library
文章介绍了使用Paging对读取大量数据显示List的帮助.
注意PagedList#setEnablePlaceholders设置为true当滚动速度大于读取速度onBind中获取的item可能会是null,当数据再次加载时会重新再被调用.如果设置为false,则会跳过null的item,但是滚动条会抖动,建议隐藏滚动条.
The Care and Feeding of Elephants
Evernote推出了最新的android-job-lib-1.2.0,这个库主要是封装了AlarmManager(pre 5.0),JobScheduler(after 5.0),GcmNetworkManager(device with Google Service),让你通过统一的API来做run tasks.
Fast and lazy .apk distribution with Crashlytics
文章介绍通过git获取最新Tag到上一个Tag之间的Log生成Release Note,然后通过Crashlytics(Fibric)来分发.
LIBRARIES & CODE
diagonal-imageview
一个帮助你斜着切图片的ImageView
purrge
node的一个库,可以通过命令轻松删除手机里面的程序
ScalingLayout
一个可以做出来Scaling效果的Layout,需要将你的Layout包在它里面.

浙公网安备 33010602011771号