Gradle:Task-#-finalizedBy()
Gradle:Task # finalizedBy()
这篇文章对Gradle的Task对象的finalizedBy()方法做一个介绍
1 官方文档接口说明:
使用示例:
https://docs.gradle.org/current/userguide/more_about_tasks.html#sec:finalizer_tasks
官方对这个方法只有只言片语的介绍,以下是我自己的理解。
2 概述Task # finalizedBy(Object ... paths)
为当前的task添加一个或若干个当前task结束后立马执行的task,且添加的task的执行顺序为无序。
3 实例ta
2019-07-19
Gradle
Java中被阉割的闭包在Kotlin中的表现如何?
1 闭包概述闭包,Clousure。在Java中表现为Lambda表达式,在Koltin中表现为函数类型变量(或者也叫做Lambda表达式)。
其定义:java为什么匿名内部类的参数引用时final? - 胖胖的回答
一个依赖于自由变量的函数
处在含有这些自由变量的一个外围环境
这个函数能够访问外围环境里的自由变量
2 Kotlin和Java的闭包对比在java8中,java中的闭包类型依然不能直接地修改外部环境的变量的引用,因此就有了众所周知的:匿名内部类的实例对外部环境的变量的访问,都需要让外部环境的变量加上final关键字。
在Kotin中,这一点被改进了,Kotlin中的闭
2019-07-06
Kotlin
LiveData的onActive()和onInactive()
看文档的时候对LiveData()的onInactive()回调产生了疑问,遂看源码,记录之。
1. 关系
概述:LiveData和Observer互相持有,LiveData将其持有的数据的变动,转发给所有注册过来的Observer。
2. onActive 和 onInactive()/**
* Called when the number of active observers change to 1 from 0.
* <p>
* This callback can be used to know that this LiveData is being used t
2019-06-13
Android-Jetpack
Kotlin笔记
Kotlin与Java的差异1. 对象的初始化时的顺序 在java中,初始化代码块 -> 构造函数
在kotlin中,主构造函数 -> 初始化代码块 -> 次构造函数
由于Kotlin中主构造函数在初始化代码块之前,因此初始化代码块可以使用主代码块传入的参数。
在kotlin中,所有的次构造器都会先调用主构造器(若不存在,也会隐式调用),而初始化代码块会放在主构造函数之后执行,因此次构造函数执行之前,初始化代码块是执行完了的。
2. 访问控制符 private:只能在类的内部或者文件内部被访问
internal:internal成员可在类的内部
2019-05-25
Kotlin
观察者模式:将对象的状态监听器抽象
回调、监听器、观察者模式。这三个名词描述的都是同一件事物:
一个有状态的对象,将自身的状态发布出去,通知到那些订阅了该对象的状态的观察者(们)。
举例子:微信用户关注(或者说订阅)一个公众号,当公众号作者发布一篇推文时,所有订阅了这个公众号的用户都能收到推送。
被观察者,都是有状态的对象,将自己的某个状态发布给订阅了他的对象们。
代码举例:
class Author {
private var onPublishEssayListener: ((id: String) -> Unit)? = null
private var onUpdateEssayListene
2019-03-29
java设计模式
FutureTask和ExecutorService#submit()
ThreadPoolExecutor对象可以通过Executor的工厂方法(newXXX)或者他自己的构造函数来创建。他是Java线程池的实现类。
使用:
//Runnable
fun main(args: Array<String>) {
val pool= Executors.newFixedThreadPool(3)
pool.execute{
Thread.sleep(2000)
println("无返回值")
pool.shutdown()
}
}
//FutureTask
f
2019-03-15
java并发
Handler内存泄漏再探索
情景
使用主线程单例Handler的post(),想要实现全局都可以往主线程post代码。
在post()中传入了一个Runnable对象,该Runnable对象在Activity中非静态,是局部匿名内部类的形式存在。
代码//单例类,提供一个主线程单例Handler。
object ExecutorsHelper {
val mainThread = MainThreadExecutor()
class MainThreadExecutor {
private val handler = Handler(Looper.getMainLooper())
2019-03-09
Android