Gradle 依赖声明的 compile
早就已经被弃用了,取而代之的则是 implementation
跟 api
。之前一直以为两者的区别在于是否可以传递依赖。
现在仔细看了下文档,发现 implementation
的禁止“传递依赖”只是指编译时的,而被传递的依赖项仍然会被打到最终的包里,在运行时提供。这么做主要还是为了提升编译效率:进行依赖隔离,当单个模块发生变更之后,对其没有直接依赖的模块可以不用重新编译。
- Aug 30, 2019...more
Koltin 中 Lambda 变量捕获
Aug 18, 2019...moreAndroid Studio Apply Changes
Aug 6, 2019...more探究 Android Studio 3.5 新增的
Apply Changes
功能。Java 里 switch 语句对 String 的支持
Sep 14, 2018...moreJava 里 switch 语句是在 JDK 7 开始支持的,现在可以支持
char, byte, short, int, Character, Byte, Short, Integer, String
类型。谈谈 View 的构造方法们
Jan 3, 2018...more在 Android 中,要实现自定义 View,可以通过继承已有的 View 来实现,并且要写对应的构造方法。
View 有四个主要的构造方法,第四个需要在 API 21 以上,一般而言我们都会实现前三个。
public View(Context context)
public View(Context context, @Nullable AttributeSet attrs)
public View(Context context, @Nullable AttributeSet attrs, int defStyleAttr)
public View(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes)
No more magic - React Redux
Jul 15, 2017...moreRedux 作为一个状态管理工具,Redux 库本身仅负责状态管理,职责就很纯粹,而与 View 层粘合的部分(比如本文要讲的 React Redux)则单独拆出来。这使做它可以灵活地与多种 View 层实现组合使用,这一点很值得学习。
本文将解析胶水 React Redux 背后的 magic。
用 Word 写论文的一点儿经验
May 20, 2017...more水一篇~
Marshmallow Runtime Permissions
Apr 5, 2017...more从 Android 6.0 (API 23) 开始系统开始将应用权限收紧,将权限分为普通(Normal Permissions)权限与危险权限(Dangerous Permissions)。
普通权限不会影响到用户的隐私,只要像以往那样在 manifest 中声明即可使用。
危险权限不仅要在 manifest 中声明,而且需要获得用户的批准。虽然可以临时将 target API 设置在 23 以下规避,但一来用户仍然可以在系统设置中强制拒绝授予权限造成应用崩溃,二来也并非长久之计。Gradle for Android 笔记
Jan 18, 2017...moreJava 的包装类型,自动装箱与拆箱
Nov 1, 2016...moreJava 作为一门面向对象的语言,仍然保留了基本的几种值类型(int,short,long,byte,char,boolean,float,double)。当然为了方便开发人员使用也提供了对应的包装类,(Integer,Short,Long,Byte,Char,Boolean,Float,Double),并且在 Java 1.5 中开始提供了自动装箱(boxing)和拆箱(unboxing)特性。
自动装箱的主要作用是方便在值类型和包装类型之间切换,比如可以直接在源代码里将值类型赋值给包装类型或反之,使用 == 来比较值类型和包装类型的值。这里提到是源代码里这样做是因为自动装箱/拆箱特性主要由编译器帮我们完成。