Kotlin作用域函数(Scope Functions)

Kotlin作用域函数(Scope Functions)

前言

Kotlin中有5种作用域函数,分别是:

let, run, with, apply, and also

它们并没有任何特性,但是使用他们可以让我们的代码更加简洁,具备更好的可读性。我们可以在找到它们的源码。下面我将分析这些方法的区别。

阅读更多
Kotlin Lambda and Extension

Kotlin Lambda and Extension

Extension Function(扩展函数)

Extension Function 能在已经存在的类中添加新的方法或者属性,即使这些类来自库或者SDK中。在函数内部,我们可以访问类的公共函数和属性而不需要任何限定符,就好像这个函数就在这个类的内部一样。(注意:从技术上将,它并没有修改现有类,只是在声明的类中创建了static public final函数)

阅读更多

Arouter 原理浅析

前言

想必大家都是用过arouter框架了,可以说arouter被广泛应用在组件化场景中,作为组件之间跳转的基石。在这篇中,我将主要分析arouter实现的原理,包括如何apt的部分以及使用时跳转的部分。

阅读更多

Android Jetpack系列其二livedata

1. livedata实现原理
2. livedata实现双向绑定

前言

livedata是被观察者的持有类,并能感应生命周期。此篇文章重在分析两点

  • livedata如何实现观察者模式的
  • livedata是如何感知数据流的变化的
  • livedata是如何感知lifecycleOwner的生命周期的
阅读更多

Koltin委托属性

委托模式

在Kotlin中委托模式通过by关键字实现

interface Base {
    fun print()
}

class Derived(b: Base): Base by b

上述表达式表示b将代理Derived去实现interface Base的方法。

阅读更多

Fragment原理浅析

前言

Fragment在日常开发中非常的常用,一版都是配合ViewPager或FrameLayout使用,我们基本不用担心操作它attachToActivity,因为FragmentManager都帮我们处理好了。那么Fragment是如何绑定Activity的生命周期的呢?系统是如何将Fragment添加到视图层的呢?Fragment的回退栈又是什么呢?带着这些问题我们开始探索Fragment的源码吧。

阅读更多

Android多渠道打包及加固方案

前言

Android多渠道打包已经是老生常谈的问题了,各个大厂也先后开源了自己的打包方案,为我们开发者带来不少便捷。今天我就来谈谈美团的Walle,我在项目中也正是用到了它,也算做个总结和备忘吧。本篇中会提及Walle的基本使用方法以及如何在项目中配置加固使用,当然,最后也稍微会从源码的角度去分析一下这个方案的原理。那么,现在开始吧。

阅读更多

Android事件分发机制(二)

前言

接上节,在这一小节中,我将着重从View和ViewGroup的源码中去探索事件分发的流程是否如上小节分析的那样,带着上一节所留下的疑问开始愉快的阅读源码吧。

阅读更多