William的小星球 
  • 首页
  • 归档
  • 分类
  • 标签
  • 关于
  •     

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   

Android-7-0

理论上所有的Android版本行为变更都可以在官网查到(自备梯子),这里仅贴一些额外需要注意的地方。 FileProviderFileProvider在Manifest里面的生命的块不需要用包名,只要名字独特即可,这样在开发sdk的时候就可以避免和用户的FileProvider冲突。
 2019-07-12   AndroidSDK适配指南   

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   

gradle的ext属性

1. 常见用法1. 在ext这个map中放字符串或者基本数据类型在android的rootProject的build.gradle中,定义如下代码块 ext { compileSdkVersion = 25 buildToolsVersion = "26.0.0" minSdkVersion = 14 targetSdkVersion = 22 appcompatV7 = "com.android.support:appcompat-v7:$androidSupportVersion" } 然后在app模块下,通过
 2019-05-20   Gradle   

观察者模式:将对象的状态监听器抽象

回调、监听器、观察者模式。这三个名词描述的都是同一件事物: 一个有状态的对象,将自身的状态发布出去,通知到那些订阅了该对象的状态的观察者(们)。 举例子:微信用户关注(或者说订阅)一个公众号,当公众号作者发布一篇推文时,所有订阅了这个公众号的用户都能收到推送。 被观察者,都是有状态的对象,将自己的某个状态发布给订阅了他的对象们。 代码举例: class Author { private var onPublishEssayListener: ((id: String) -> Unit)? = null private var onUpdateEssayListene
 2019-03-29   java设计模式   

git新建远程分支,创建跟踪远程分支的本地副本

新建远程分支:git push -u origin 远程分支名 新建远程分支,并将本地分支的commit信息push到远程分支。注意要加-u,表示当前追踪远程指定分支,如果不加,也无法建立远程分支。 创建跟踪远程分支的本地副本:$ git branch 本地分支名 origin/远程分支名 建议本地分支名=远程分支名,否则在push的时候,git会提醒你,并让你明确指定那一次push的远程分支名。
 2019-03-28   git   

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   
1…34567…21

搜索

Hexo Fluid