<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[AirField的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/PrisonJoker</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; PrisonJoker]]></copyright><item><title><![CDATA[Kotlin let、with、run、apply、also函数]]></title><link>https://blog.youkuaiyun.com/PrisonJoker/article/details/114817905</link><guid>https://blog.youkuaiyun.com/PrisonJoker/article/details/114817905</guid><author>PrisonJoker</author><pubDate>Mon, 15 Mar 2021 08:19:02 +0800</pubDate><description><![CDATA[简述

相比Java, Kotlin提供了不少高级语法特性。对于一个Kotlin的初学者来说经常会写出一些不够优雅的代码。在Kotlin中的源码标准库(Standard.kt)中提供了一些Kotlin扩展的内置函数可以优化kotlin的编码。Standard.kt是Kotlin库的一部分，它定义了一些基本函数。 这个源代码文件虽然一共不到50行代码，但是这些函数功能都非常强大。


函数定义



			函数名
			
			
			实现
			
		
			let
			
			
			fun T.le.]]></description><category></category></item><item><title><![CDATA[Jetpack:Databinding组件]]></title><link>https://blog.youkuaiyun.com/PrisonJoker/article/details/114609372</link><guid>https://blog.youkuaiyun.com/PrisonJoker/article/details/114609372</guid><author>PrisonJoker</author><pubDate>Wed, 10 Mar 2021 00:38:57 +0800</pubDate><description><![CDATA[DataBinding介绍

DataBinding是一个支持库，顾名思义：数据绑定，它可以将布局页面中的组件与应用中的数据绑定，它支持单向绑定与双向绑定，所谓单向绑定是指数据的变化会驱动页面的变化。而双向绑定除此之外还支持页面的变化驱动数据的变化，

DataBinding只是一种工具，它解决的是View和数据之间的绑定。MVVM是一种架构模式，两者是有本质区别的。

使用DataBinding

如果想在应用中使用DataBinding，需要在应用的build.gradle文件中添加dataBindin]]></description><category></category></item><item><title><![CDATA[Jetpack:ViewModel组件]]></title><link>https://blog.youkuaiyun.com/PrisonJoker/article/details/114515844</link><guid>https://blog.youkuaiyun.com/PrisonJoker/article/details/114515844</guid><author>PrisonJoker</author><pubDate>Mon, 08 Mar 2021 07:44:50 +0800</pubDate><description><![CDATA[一、介绍

ViewModel类是被设计用来以可感知生命周期的方式存储和管理 UI 相关数据，ViewModel中数据会一直存活即使 activity configuration发生变化，比如横竖屏切换的时候。

ViewModel 可以解决那些痛点。

1、数据持久化

我们知道在屏幕旋转的 时候 会经历 activity 的销毁与重新创建，这里就涉及到数据保存的问题，显然重新请求或加载数据是不友好的。在 ViewModel 出现之前我们可以用 activity 的onSaveInstanceState(]]></description><category></category></item><item><title><![CDATA[Jetpack:Lifecycle组件]]></title><link>https://blog.youkuaiyun.com/PrisonJoker/article/details/114487952</link><guid>https://blog.youkuaiyun.com/PrisonJoker/article/details/114487952</guid><author>PrisonJoker</author><pubDate>Sun, 07 Mar 2021 17:07:30 +0800</pubDate><description><![CDATA[1. Lifecycle简介

Lifecycle是Android Jetpack框架提供的能够感知组件(宿主)生命周期变化的组件，它能持有宿主(如Activity或Fragment)生命周期状态的信息，并且允许其他观察者注册监听宿主的生命周期状态变化，这就使得我们不用主动去获取宿主的状态，有利于降低代码耦合度并更容易维护。Lifecycle是JetPack组件库的核心基础，很多其他的Jetpack组件，比如LiveData、ViewMoedel等，都是基于它实现的。


1.1 Lifecycle基本使用]]></description><category></category></item><item><title><![CDATA[Android Studio生成签名文件以及查看签名]]></title><link>https://blog.youkuaiyun.com/PrisonJoker/article/details/114479891</link><guid>https://blog.youkuaiyun.com/PrisonJoker/article/details/114479891</guid><author>PrisonJoker</author><pubDate>Sun, 07 Mar 2021 12:44:11 +0800</pubDate><description><![CDATA[Android Studio生成签名文件以及查看签名

Android Studio生成签名文件







如果已经有签名文件，Choose existing选择导入

没有则 Create new



Warning:
JKS 密钥库使用专用格式。建议使用 "keytool -importkeystore -srckeystore D:\WorkEnv\androidsign\sign.jks -destkeystore D:\WorkEnv\androidsign\sign.jks -destst]]></description><category></category></item><item><title><![CDATA[Gradle命令详解]]></title><link>https://blog.youkuaiyun.com/PrisonJoker/article/details/114380253</link><guid>https://blog.youkuaiyun.com/PrisonJoker/article/details/114380253</guid><author>PrisonJoker</author><pubDate>Thu, 04 Mar 2021 23:07:18 +0800</pubDate><description><![CDATA[Gradle命令详解

我们介绍了 Gradle 的任务声明，任务依赖，Gradle 构建的顺序等。其实在文章中我们也提到了一些 Gradle 命令。本文我们将为大家介绍一下 Gradle 的命令，包括会将前面的命令使用做一个汇总。

1. 使用 Gradle 命令

使用 Gradle 命令就是我们在命令控制台输入 Gradle 命令，使用 Gradle 命令我们可以配置 Gradle 环境，也可以不用配置 Gradle 环境，下面我们看下具体的使用方法

1.1 已经安装了Gradle环境

如果安装了]]></description><category></category></item><item><title><![CDATA[编写 Gradle 任务Task]]></title><link>https://blog.youkuaiyun.com/PrisonJoker/article/details/114355081</link><guid>https://blog.youkuaiyun.com/PrisonJoker/article/details/114355081</guid><author>PrisonJoker</author><pubDate>Thu, 04 Mar 2021 08:02:37 +0800</pubDate><description><![CDATA[编写 Gradle 任务Task

我们先介绍了 Gradle，然后学习了 Groovy 的基础语法，紧接着介绍了 Android 项目中 Gradle 的配置。我们从配置中可以看出 Gradle 的构建都是基于任务(Task)的，有了前面几节的基础，今天这节课我们来学习一下，怎么样去定义一个 Gradle 的任务(Task)，以及Task的生命周期。

1. 声明 Task

关于 Task 的声明，我们其实在《构建自己的 Gradle 工程》这一节里面就有所介绍，我们创建 Gradle 项目时就声明..]]></description><category></category></item><item><title><![CDATA[Gradle Wrapper 详解]]></title><link>https://blog.youkuaiyun.com/PrisonJoker/article/details/114340291</link><guid>https://blog.youkuaiyun.com/PrisonJoker/article/details/114340291</guid><author>PrisonJoker</author><pubDate>Wed, 03 Mar 2021 23:49:21 +0800</pubDate><description><![CDATA[Gradle Wrapper 详解

我们介绍了 Android 项目的目录及 Gradle 配置，我们提到有个目录是/gradle/wrapper。今天这篇文章我们来学习 Gradle Wrapper。通过这篇文章我们将了解什么是 Gradle Wrapper？为什么需要用 Gradle Wrapper？以及 Gradle Wrapper 的重要性。

1. 什么是 Gradle Wrapper？

关于“什么是 Gradle Wrapper？”这个问题在官网是这么定义的：

The recommende]]></description><category></category></item><item><title><![CDATA[Groovy 语言基础]]></title><link>https://blog.youkuaiyun.com/PrisonJoker/article/details/114294081</link><guid>https://blog.youkuaiyun.com/PrisonJoker/article/details/114294081</guid><author>PrisonJoker</author><pubDate>Tue, 02 Mar 2021 21:00:38 +0800</pubDate><description><![CDATA[Groovy 语言基础

Gradle 是一个构建工具，它的构建脚本是基于 Groovy 或是 Kotlin 语言编写的。

今天我们就来看下 Groovy 的基础语法。Groovy结合了 Java、Python、Ruby 等当下几大流行语言的优点。它可以说是从 Java 中衍生出来的，为什么这么说呢？因为它的语法和 Java 非常的相似，它的文件也是可以编译为 .class 文件，而且可以使用 Java 的类库。

1. Groovy 基础语法

1.1 基础语法

1. 定义变量 def

在 Gro.]]></description><category></category></item><item><title><![CDATA[Gradle 配置详解]]></title><link>https://blog.youkuaiyun.com/PrisonJoker/article/details/114274736</link><guid>https://blog.youkuaiyun.com/PrisonJoker/article/details/114274736</guid><author>PrisonJoker</author><pubDate>Tue, 02 Mar 2021 00:22:16 +0800</pubDate><description><![CDATA[Gradle 配置详解

我们为大家介绍一下 Android 项目中 Gradle 的配置。

1. AndroidStudio 项目结构

我们介绍 AndroidStudio 中 Android 项目的 Gradle 配置之前，我们先来看下 AndroidStudio 中 Android 项目的结构，我们新建一个项目结构大致如下图所示：



我们通过上面的图片可以看到，Android 项目中跟 Gradle 相关的主要有 7 个部分：

根目录下的 build.gradle：顶级构建文件，配置 Gr.]]></description><category></category></item><item><title><![CDATA[构建自己的 Gradle 工程]]></title><link>https://blog.youkuaiyun.com/PrisonJoker/article/details/114274549</link><guid>https://blog.youkuaiyun.com/PrisonJoker/article/details/114274549</guid><author>PrisonJoker</author><pubDate>Mon, 01 Mar 2021 23:51:54 +0800</pubDate><description><![CDATA[构建自己的 Gradle 工程

这篇文章我们将一步步带大家从环境搭建到创建一个 Gradle 工程。从 0 到 1，帮助大家更好的理解 Gradle。

1. Gradle 的安装

我们安装 Gradle 之前首先要确保我们已经在系统中安装了 JDK，并且 JDK 的版本最低在 1.7。注意最新的 Gradle 版本需要 JDK1.8 及以上。
可以在控制台用java -version命令查看自己的 JDK 版本。如下：



Gradle 的安装有 2 种方式：

包安装：包安装方式就是通过包管理..]]></description><category></category></item><item><title><![CDATA[Kotlin lambda表达式]]></title><link>https://blog.youkuaiyun.com/PrisonJoker/article/details/114273946</link><guid>https://blog.youkuaiyun.com/PrisonJoker/article/details/114273946</guid><author>PrisonJoker</author><pubDate>Mon, 01 Mar 2021 23:17:54 +0800</pubDate><description><![CDATA[Kotlin lambda表达式

这篇文章一起来聊下 Kotlin 中的 lambda 表达式。lambda 表达式大家应该都不陌生，这是在 Java8 中引入的一个很重要的特性。将开发者从原来繁琐的语法中解放出来，可是很遗憾的是只有Java8 及以上版本才能使用。而 Kotlin 则弥补了这一问题，Kotlin 中的 lambda 表达式与 Java 混合编程可以支持 Java8以下的版本。那我们带着以下几个问题一起来看下 Kotlin 中 lambda 表达式。

1. 为什么要使用Kotlin的la]]></description><category></category></item><item><title><![CDATA[Gradle简介]]></title><link>https://blog.youkuaiyun.com/PrisonJoker/article/details/114246936</link><guid>https://blog.youkuaiyun.com/PrisonJoker/article/details/114246936</guid><author>PrisonJoker</author><pubDate>Mon, 01 Mar 2021 07:45:50 +0800</pubDate><description><![CDATA[Gradle 简介

关于 Gradle 我们开发中用的非常多，它的知识点完全可以写一本书，这个专题我们重点针对 Gradle 在 Android 日常开发中的应用进行讲解。本文我们主要先介绍一下 Gradle 是什么？有哪些特性？优点在哪？为什么我们构建要用 Gradle？

1. 什么是 Gradle？

什么是 Gradle 呢？在 Gradle 官网中是这么介绍的：

Gradle is an open-source build automation tool focused on flexibil]]></description><category></category></item><item><title><![CDATA[Kotlin 对象表达式和伴生对象]]></title><link>https://blog.youkuaiyun.com/PrisonJoker/article/details/114242581</link><guid>https://blog.youkuaiyun.com/PrisonJoker/article/details/114242581</guid><author>PrisonJoker</author><pubDate>Mon, 01 Mar 2021 00:15:05 +0800</pubDate><description><![CDATA[Kotlin 对象表达式和伴生对象

本篇文章将是 Kotlin 面向对象系列的最后一篇文章，这篇文章将会介绍几个特殊的对象语法，这是 Kotlin 语法中独有的。比如对象表达式 (object)，天生的单例对象它会使写一个单例模式变得特别简单，而不是像 Java 那样声明一些语法模板。此外伴生对象 (companion object) 它将替代 Java 中的 static 静态成员。

1. 为什么需要对象表达式

1.1 对象表达式天生单例，会使得单例模式更简单

相信很多小伙伴都手写过 Java 中]]></description><category></category></item><item><title><![CDATA[Kotlin中的操作符函数]]></title><link>https://blog.youkuaiyun.com/PrisonJoker/article/details/114240614</link><guid>https://blog.youkuaiyun.com/PrisonJoker/article/details/114240614</guid><author>PrisonJoker</author><pubDate>Sun, 28 Feb 2021 23:41:09 +0800</pubDate><description><![CDATA[Kotlin 中的操作符函数

这节课我们来聊聊 Kotlin 这门语言对函数式编程的支持。我们都知道在 Kotlin 这门语言中函数荣升成为了一等公民，所以在支持函数式编程的方面，Kotlin 也是非常给力的，并且在 Kotlin 中语法也尽量推荐接近函数式编程的风格。

学过以及了解过函数式编程的小伙伴都知道函数式编程最吸引人的地方，莫过于它拥有丰富的函数式操作符，可以使用一种全新的编程方式去操作集合数据。其中操作符最流行莫过于函数式中“三板斧”(过滤filter、映射map、折叠foldLeft/化约]]></description><category></category></item><item><title><![CDATA[Kotlin系统类型]]></title><link>https://blog.youkuaiyun.com/PrisonJoker/article/details/114241357</link><guid>https://blog.youkuaiyun.com/PrisonJoker/article/details/114241357</guid><author>PrisonJoker</author><pubDate>Sun, 28 Feb 2021 23:11:04 +0800</pubDate><description><![CDATA[Kotlin类型系统

这篇文章一起来看下 Kotlin 中类型系统，其中涉及到一个很重要的概念就是大家常说的可空性以及为什么Kotlin 相比 Java 在一定程度上能降低空指针异常。此外在 Kotlin 中完全采用和 Java 不同思路来定义它的类型系统。也正因为这样类型系统天然具有让 Kotlin 在空指针异常出现的频率明显低于 Java出现的频率的优势。此外 Kotlin 考虑使用和 Java 完全不同类型系统，以及它是如何去做到极大兼容和互操作。

1. 梳理概念

在学习 Kotlin 类型系.]]></description><category></category></item><item><title><![CDATA[Kotlin扩展函数]]></title><link>https://blog.youkuaiyun.com/PrisonJoker/article/details/114198901</link><guid>https://blog.youkuaiyun.com/PrisonJoker/article/details/114198901</guid><author>PrisonJoker</author><pubDate>Sat, 27 Feb 2021 23:51:16 +0800</pubDate><description><![CDATA[Kotlin 扩展函数

1. 为什么需要扩展函数?

我们都知道 Koltin 这门语言与 Java 有非常好的互操作性，并且扩展函数这个新特性可以很平滑与现有Java 代码集成。甚至纯 Kotlin 的项目都可以基于 Java 库或者 Android 中的一些第三方框架库来构建，所以扩展函数非常适合 Kotlin 和 Java 语言混合开发模式。在很多公司一些比较稳定良好的库都是 Java 开发的，也完全没必要去用 Kotlin 语言重写。但是想要扩展库的接口和功能，这时候扩展函数可能就会派上用场。使用]]></description><category></category></item><item><title><![CDATA[Kotlin数据类、密封类、内部类和嵌套类]]></title><link>https://blog.youkuaiyun.com/PrisonJoker/article/details/114108822</link><guid>https://blog.youkuaiyun.com/PrisonJoker/article/details/114108822</guid><author>PrisonJoker</author><pubDate>Fri, 26 Feb 2021 00:32:05 +0800</pubDate><description><![CDATA[Kotlin 数据类、密封类、内部类和嵌套类

Kotlin 几个比较特殊的类，其中数据类 (data class) 和密封类 (sealed class) 是 Java 中不存在的，所以下面会一一介绍它们如何使用、使用场景、它们解决了哪些问题以及语法糖背后的原理。此外在 Kotlin 中存在嵌套类和内部类，需要注意的是 Kotlin 的嵌套类不是内部类，这点和 Java 是不一样的，所以内部嵌套类不能访问外部类实例。

在 Kotlin 中内部类声明需要单独使用inner关键字声明

1. 内部类和嵌..]]></description><category></category></item><item><title><![CDATA[Kotlin抽象与接口]]></title><link>https://blog.youkuaiyun.com/PrisonJoker/article/details/114108234</link><guid>https://blog.youkuaiyun.com/PrisonJoker/article/details/114108234</guid><author>PrisonJoker</author><pubDate>Thu, 25 Feb 2021 22:59:42 +0800</pubDate><description><![CDATA[Kotlin 抽象与接口

其实在 Kotlin 中继承、接口大部分和 Java 是一样的，但是在语法层面支持是不一样。因为 Kotlin 会有一层语法糖可以很方便高效地声明某个语法，从而让你把更多精力专注在业务逻辑上，而不是语法代码模板上。然后我们还会一起来聊下 Kotlin 多继承的实现，Kotlin 和 Java 一样都是单继承，这一点是毋庸置疑的，但是我们也会需要多继承场景，那么 Kotlin 是怎么解决这样场景的呢？大家肯定想到的是接口多继承，具体怎么一起来看看吧。

1. 抽象与接口

与 Ja]]></description><category></category></item><item><title><![CDATA[Kotlin类和对象]]></title><link>https://blog.youkuaiyun.com/PrisonJoker/article/details/114107915</link><guid>https://blog.youkuaiyun.com/PrisonJoker/article/details/114107915</guid><author>PrisonJoker</author><pubDate>Thu, 25 Feb 2021 22:41:38 +0800</pubDate><description><![CDATA[Kotlin 类和对象

从这篇文章开始我们一起正式进入 Kotlin 面向对象的世界，Kotlin 实际上也是一门面向对象的语言但同时又兼顾了函数式编程语言。只不过函数在 Kotlin 中的地位被提升至一等公民。但是在 Kotlin 中也是有类、对象、属性、方法等。

1. Kotlin 中的类

在 Kotlin 中类和 Java 中概念基本是一致的，都是使用class关键字来声明一个类，一个类中可以用属性表示一个类的状态，可以用方法来表示一个类的行为。但是与 Java 不同的是 Kotlin 中的..]]></description><category></category></item></channel></rss>