<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[仲斌]]></title><description><![CDATA[日拱一卒,功不唐捐 ]]></description><link>https://blog.youkuaiyun.com/abcd112358</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; abcd112358]]></copyright><item><title><![CDATA[基础反射技术总结]]></title><link>https://blog.youkuaiyun.com/abcd112358/article/details/109251549</link><guid>https://blog.youkuaiyun.com/abcd112358/article/details/109251549</guid><author>abcd112358</author><pubDate>Sat, 24 Oct 2020 22:26:07 +0800</pubDate><description><![CDATA[前言
相信每一个做Android开发的同学都用到过反射；同样我也经常用到；但是我从来没有好好的总结过这个经常用到的技术。很幸运在读包建强老师的书的时候看到了他专门有一章关于反射的总结。我决定在此基础上总结记录一下。
反射包括一下技术：

根据一个字符串得到一个类对象
获取一个类的所有公有或者私有、静态或者实例的字段、方法、属性
对于泛型类的反射

得到Class对象

getClass方法

String s = "Hello";
s.getClass();


Class.forName

try {
 ]]></description><category></category></item><item><title><![CDATA[EventBus分析]]></title><link>https://blog.youkuaiyun.com/abcd112358/article/details/107883918</link><guid>https://blog.youkuaiyun.com/abcd112358/article/details/107883918</guid><author>abcd112358</author><pubDate>Sat, 08 Aug 2020 18:43:47 +0800</pubDate><description><![CDATA[EventBus简介
github地址：https://github.com/greenrobot/EventBus
用法
Eventbus 使用很简单，三步就行

定义事件类型

public static class MessageEvent { /* Additional fields if needed */ }


订阅事件，使用注解订阅事件

@Subscribe(threadMode = ThreadMode.MAIN) 
public void onMessageEvent(MessageE]]></description><category></category></item><item><title><![CDATA[Native层的Looper和MessageQueue]]></title><link>https://blog.youkuaiyun.com/abcd112358/article/details/105093994</link><guid>https://blog.youkuaiyun.com/abcd112358/article/details/105093994</guid><author>abcd112358</author><pubDate>Wed, 25 Mar 2020 14:19:01 +0800</pubDate><description><![CDATA[java层处理message，是在Looper死循环中不断从MessageQueue中读取Message进行处理，但是不知道有没有注意到，MessageQueue的一些native函数。其实MessageQueue不仅在java有一套实现，MessageQueue在native层还有一套实现。
MessageQueue
MessageQueue初始化
frameworks/base/core/ja...]]></description><category></category></item><item><title><![CDATA[Touch事件的获取与分发]]></title><link>https://blog.youkuaiyun.com/abcd112358/article/details/105092721</link><guid>https://blog.youkuaiyun.com/abcd112358/article/details/105092721</guid><author>abcd112358</author><pubDate>Wed, 25 Mar 2020 14:07:14 +0800</pubDate><description><![CDATA[Android输入系统整体结构
Android系统支持触摸屏与键盘等很多输入设备。当输入设备可用时，Android系统会在Linux内核/dev/input下创建event0~n或其他名称的的设备节点；当输入设备不可用时会删除相应的节点。在用户空间可以通过ioctl的方式从这些设备节点中获取信息。
Android 输入系统简单说就是监控/dev/input下的所有节点，然后将获取的原始信息进行加工...]]></description><category></category></item><item><title><![CDATA[android EditText输入长度限制]]></title><link>https://blog.youkuaiyun.com/abcd112358/article/details/89737158</link><guid>https://blog.youkuaiyun.com/abcd112358/article/details/89737158</guid><author>abcd112358</author><pubDate>Wed, 01 May 2019 13:47:43 +0800</pubDate><description><![CDATA[android EditText输入长度限制UTF-16编码UTF-16描述从U+0000至U+D7FF以及从U+E000至U+FFFF的码位从U+10000到U+10FFFF的码位从U+D800到U+DFFF的码位UTF-8 编码自定义的lengthFilter
我相信大家一定都遇到过这样的需求，PM要求你限制EditText输入字符的个数；很多同学肯定会想到使用InputFilter.Leng...]]></description><category></category></item><item><title><![CDATA[kotlin第八天：异常、java和kotlin互操作]]></title><link>https://blog.youkuaiyun.com/abcd112358/article/details/89067897</link><guid>https://blog.youkuaiyun.com/abcd112358/article/details/89067897</guid><author>abcd112358</author><pubDate>Sun, 07 Apr 2019 21:55:17 +0800</pubDate><description><![CDATA[kotlin第八天：异常、java和kotlin互操作异常异常类Try 是一个表达式受检的异常Nothing 类型java 和kotlin互操作在 Kotlin 中调用 Java 代码已映射类型Kotlin 中的 Java 泛型Java 数组Java 可变参数操作符受检异常对象方法从 Java 类继承Java 反射SAM 转换在 Kotlin 中使用 JNIJava 中调用 Kotlin属性包级函...]]></description><category></category></item><item><title><![CDATA[kotlin第七天：集合数组、注解、反射]]></title><link>https://blog.youkuaiyun.com/abcd112358/article/details/88812600</link><guid>https://blog.youkuaiyun.com/abcd112358/article/details/88812600</guid><author>abcd112358</author><pubDate>Sun, 07 Apr 2019 11:43:09 +0800</pubDate><description><![CDATA[集合与数组
可空性和集合
kotlin支持值为null的集合，也就是集合的类型参数支持“?”；看个例子就明白了

注意区分集合值可空，还是集合本身可空

只读集合和可变集合
Kotlin 的集合设计和 Java不同的另 一项重要特质是，它把访问集合数据的接 口和修改集合数据 的接口分开了 。 这种区别存在于最基础的使用集合的接口之中 :
使用kotlin.collections.Collectio...]]></description><category></category></item><item><title><![CDATA[kotlin第六天：解构、运算符重载]]></title><link>https://blog.youkuaiyun.com/abcd112358/article/details/88760490</link><guid>https://blog.youkuaiyun.com/abcd112358/article/details/88760490</guid><author>abcd112358</author><pubDate>Sat, 23 Mar 2019 14:19:26 +0800</pubDate><description><![CDATA[kotlin第六天：解构、运算符重载解构声明使用场景一：函数返回多个值使用场景二：循环迭代运算符重载重载二元算术运算基本语法运算符函数声明为扩展函数运算符函数重载重载复合赋值运算符重载一元运算符重载比较运算符等号运算符排序运算符
解构声明
解构声明，允许你展开单个复合值，并且使用它来初始化多个单独的变量。
val p = Point(10,20)
val(x,y) = p

事实上，解构声明用到了...]]></description><category></category></item><item><title><![CDATA[kotlin 第五天：类与对象(四)]]></title><link>https://blog.youkuaiyun.com/abcd112358/article/details/88633102</link><guid>https://blog.youkuaiyun.com/abcd112358/article/details/88633102</guid><author>abcd112358</author><pubDate>Mon, 18 Mar 2019 09:31:56 +0800</pubDate><description><![CDATA[kotlin 第五天：类与对象 四泛型类型参数约束类、类型和子类型协变：保留子类型化关系逆变：反子类型化关系使用点变型使用*投影对象对象表达式对象声明单例伴生对象对象表达式和对象声明之间的语义差异委托委托实现覆盖由委托实现的接口成员委托属性标准属性委托延迟属性 Lazy可观察属性 Observable把属性储存在映射中局部委托属性（自 1.1 起）提供委托（自 1.1 起）
泛型
类型参数约束
可...]]></description><category></category></item><item><title><![CDATA[kotlin 第四天：类与对象 三]]></title><link>https://blog.youkuaiyun.com/abcd112358/article/details/88395417</link><guid>https://blog.youkuaiyun.com/abcd112358/article/details/88395417</guid><author>abcd112358</author><pubDate>Mon, 11 Mar 2019 15:46:45 +0800</pubDate><description><![CDATA[kotlin 第四天：类与对象 三扩展扩展函数扩展是静态解析的可空接收者扩展属性伴生对象的扩展扩展的作用域扩展声明为成员动机函数函数声明函数用法参数默认参数命名参数返回 Unit 的函数单表达式函数显式返回类型可变数量的参数（Varargs）中缀表示法函数作用域局部函数成员函数泛型函数尾递归函数高阶函数与 lambda 表达式高阶函数函数类型函数类型实例化函数类型实例调用Lambda 表达式与匿名...]]></description><category></category></item><item><title><![CDATA[Kotlin第三天：类与对象二]]></title><link>https://blog.youkuaiyun.com/abcd112358/article/details/87928458</link><guid>https://blog.youkuaiyun.com/abcd112358/article/details/87928458</guid><author>abcd112358</author><pubDate>Tue, 26 Feb 2019 09:02:16 +0800</pubDate><description><![CDATA[类与对象二 接口接口中的属性接口中的属性接口继承解决覆盖冲突可见性包类和接口构造函数局部声明模块嵌套类与内部类内部类This 表达式限定的 this匿名内部类数据类复制密封类定义特点好处枚举类初始化匿名类在枚举类中实现接口使用枚举常量内联类成员表示方式内联类与类型别名内联类的实验性状态在 Gradle 中启用内联类：在 Maven 中启用内联类
接口
Kotlin 的接口与 Java 8 类似，既...]]></description><category></category></item><item><title><![CDATA[Kotlin第二天：类与对象（一）]]></title><link>https://blog.youkuaiyun.com/abcd112358/article/details/87912305</link><guid>https://blog.youkuaiyun.com/abcd112358/article/details/87912305</guid><author>abcd112358</author><pubDate>Mon, 25 Feb 2019 10:21:42 +0800</pubDate><description><![CDATA[Kotlin第二天：类与对象（一）类类的定义构造函数主构造函数次构造函数创建实例类成员继承覆盖方法覆盖属性派生类初始化顺序调用超类实现覆盖规则继承接口和类个数抽象类属性和字段声明属性Getters 与 Setters幕后字段幕后属性编译期常量延迟初始化属性与变量
类
类的定义
Kotlin 中使用关键字 class 声明类，类声明由类名、类头（指定其类型参数、主构造函数等）以及由花括号包围的类体构...]]></description><category></category></item><item><title><![CDATA[Kotlin第一天：基本语法]]></title><link>https://blog.youkuaiyun.com/abcd112358/article/details/87883328</link><guid>https://blog.youkuaiyun.com/abcd112358/article/details/87883328</guid><author>abcd112358</author><pubDate>Fri, 22 Feb 2019 17:59:04 +0800</pubDate><description><![CDATA[Kotlin第一天：基本语法定义函数定义变量字符串模板空安全空安全编译检测条件中检测null安全调用Elvis 操作符!! 操作符类型安全转换可空类型的集合使用类型检测及自动类型转换循环迭代使用forwhilebreak和continue条件语句if表达式when语句（相当于switch）
本着上去就是干的原则，学习kotlin第一天，看了一些基本语法；有点java基础知识的应该没有太多问题
定义...]]></description><category></category></item><item><title><![CDATA[流与文件]]></title><link>https://blog.youkuaiyun.com/abcd112358/article/details/86133950</link><guid>https://blog.youkuaiyun.com/abcd112358/article/details/86133950</guid><author>abcd112358</author><pubDate>Wed, 23 Jan 2019 09:29:40 +0800</pubDate><description><![CDATA[流与文件流流家族组合流过滤器
流
java 流定义：可以从中读入一个字节序列的对象称为 输入流；可以向其写入字节序列的是 输出流
主要有2种基类：InputStream 、OutputStream和Reader、WriterInputStream 、OutputStream处理单字节的字符；Reader、Writer处理 两字节的Unicode码元。
InputStream 的read方法读入一个...]]></description><category></category></item><item><title><![CDATA[java线程基础知识总结]]></title><link>https://blog.youkuaiyun.com/abcd112358/article/details/85566599</link><guid>https://blog.youkuaiyun.com/abcd112358/article/details/85566599</guid><author>abcd112358</author><pubDate>Tue, 01 Jan 2019 22:43:43 +0800</pubDate><description><![CDATA[java线程基础知识总结什么是线程线程的简单使用线程中断线程状态线程属性线程同步ReentrantLock类条件锁注意synchronized关键字同步阻塞volatile关键字线程局部变量stop 和suspend方法被弃用原因阻塞队列Callable、Future和FutureTask执行器
什么是线程
一个程序同时执行多个任务，通常每个任务称为一个线程。
进程和线程区别
进程拥有自己的一整套...]]></description><category></category></item><item><title><![CDATA[Java泛型程序设计]]></title><link>https://blog.youkuaiyun.com/abcd112358/article/details/84721083</link><guid>https://blog.youkuaiyun.com/abcd112358/article/details/84721083</guid><author>abcd112358</author><pubDate>Sun, 16 Dec 2018 20:38:06 +0800</pubDate><description><![CDATA[Java 泛型程序设计简单的泛型使用泛型类的定义和使用泛型方法类型变量的限定
要学习java泛型，我觉得首先得知道设计的目的；第一，不用强制类型转换；第二，能够编译时检查，更加安全；第三，代码可读性增加。
简单的泛型使用
泛型类的定义和使用
泛型类就是具有有个或者多个类型变量的类。
public class Pair&amp;amp;amp;amp;amp;lt;T&amp;amp;amp;amp;amp;gt;{
	private T first;
	private T s...]]></description><category></category></item><item><title><![CDATA[Android注解：自定义注解之源码注解]]></title><link>https://blog.youkuaiyun.com/abcd112358/article/details/83892252</link><guid>https://blog.youkuaiyun.com/abcd112358/article/details/83892252</guid><author>abcd112358</author><pubDate>Tue, 13 Nov 2018 10:27:33 +0800</pubDate><description><![CDATA[Android注解：自定义注解之源码注解 
首先如果你对注解没有太多了了解，建议先看一下我之前的两篇博客
Android注解：Java注解
Android注解：Android 常用注解

...]]></description><category></category></item><item><title><![CDATA[Android注解：Android 常用注解]]></title><link>https://blog.youkuaiyun.com/abcd112358/article/details/83480099</link><guid>https://blog.youkuaiyun.com/abcd112358/article/details/83480099</guid><author>abcd112358</author><pubDate>Sun, 04 Nov 2018 13:35:23 +0800</pubDate><description><![CDATA[Android注解：Android 常用注解 1 添加支持注解库依赖项2 运行代码检查3 Android常用注解
首先说一下在Android代码中使用注解的好处。使用注解向 Lint 之类的代码检查工具提供提示，帮助检测这些更细微的代码问题；还可以少写一些重复代码；使用注解还非常的方便等等。
1 添加支持注解库依赖项
支持注解库是 Android 支持库的一部分。要向您的项目添加注解，您必须下载支...]]></description><category></category></item><item><title><![CDATA[Android注解：Java注解]]></title><link>https://blog.youkuaiyun.com/abcd112358/article/details/83374556</link><guid>https://blog.youkuaiyun.com/abcd112358/article/details/83374556</guid><author>abcd112358</author><pubDate>Sun, 28 Oct 2018 23:21:37 +0800</pubDate><description><![CDATA[java注解语法
java 注解定义
java注解通过@interface进行定义；例：
public @interface TestAnnotation {
}

其实这个和定义接口没啥区别，只是在interface关键字前加了一个@
元注解
我们每次点开别人的注解经常看到的是这样的
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.S...]]></description><category></category></item><item><title><![CDATA[Groovy 闭包]]></title><link>https://blog.youkuaiyun.com/abcd112358/article/details/83034825</link><guid>https://blog.youkuaiyun.com/abcd112358/article/details/83034825</guid><author>abcd112358</author><pubDate>Sat, 13 Oct 2018 22:44:46 +0800</pubDate><description><![CDATA[Groovy 闭包 前言1 闭包语法1.1 闭包定义1.2 闭包作为一个对象1.3 闭包调用2 闭包参数2.1常规参数2.2 隐含参数2.3 可变参数3 代理策略3.1 Groovy 闭包VS lambda表达式3.2 owner,delegate和 this3.2.1  闭包中this的含义3.2.2 闭包中的Owner
前言
  Groovy闭包对于之前没有多少动态语言学习经验的小伙伴可能刚开...]]></description><category></category></item></channel></rss>