<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[xiaocajiyyd的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/xiaocajiyyd</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; xiaocajiyyd]]></copyright><item><title><![CDATA[关于对Android自动埋点的学习]]></title><link>https://blog.youkuaiyun.com/xiaocajiyyd/article/details/88977811</link><guid>https://blog.youkuaiyun.com/xiaocajiyyd/article/details/88977811</guid><author>xiaocajiyyd</author><pubDate>Mon, 19 Oct 2020 11:29:52 +0800</pubDate><description><![CDATA[关于对自动埋点的学习背景自动埋点的应用场景View 唯一标识标识的目的解决方案xpathxpath原理xpath实现xpath优缺点及解决方案事件拦截事件拦截的目标事件拦截的方式代理监听编译期插桩业务数据搜集方案一 DataPathDataPath原理与实现方案 OnClick事件数据搜集实现在内部类中找到自己想要的数据
背景
自动埋点的应用场景
View 唯一标识
标识的目的
解决方案xpath...]]></description><category></category></item><item><title><![CDATA[Kotlin Extensions扩展（翻译）]]></title><link>https://blog.youkuaiyun.com/xiaocajiyyd/article/details/81172912</link><guid>https://blog.youkuaiyun.com/xiaocajiyyd/article/details/81172912</guid><author>xiaocajiyyd</author><pubDate>Tue, 24 Jul 2018 10:49:28 +0800</pubDate><description><![CDATA[Extensions

Kotlin语言拥有不通过继承基类和使用类似与装饰器模式的设计模式而去为一个类去增加一个新的功能的能力。 
这种能力称为Extensions。Kotlin支持extension functions 和 extension properties。

Extension Functions

去申明一个extension function。我们需要将被被添加申明的类别前置作为接...]]></description><category></category></item><item><title><![CDATA[Node.js  模块的加载初探]]></title><link>https://blog.youkuaiyun.com/xiaocajiyyd/article/details/80903713</link><guid>https://blog.youkuaiyun.com/xiaocajiyyd/article/details/80903713</guid><author>xiaocajiyyd</author><pubDate>Tue, 03 Jul 2018 20:08:59 +0800</pubDate><description><![CDATA[1模块加载的 Demo


模块文件 hello.js


function hello(){
    //定义一个变量
    var name;
    this.setName = function(tName){
        name = tName;
    }
    this.sayHello = function(){
        console.log(&quot;Hello &quot; ...]]></description><category></category></item><item><title><![CDATA[JNI Charter3 Basic ypes,Strings,and Arrays]]></title><link>https://blog.youkuaiyun.com/xiaocajiyyd/article/details/80690609</link><guid>https://blog.youkuaiyun.com/xiaocajiyyd/article/details/80690609</guid><author>xiaocajiyyd</author><pubDate>Thu, 14 Jun 2018 19:39:19 +0800</pubDate><description><![CDATA[
  当遇到有着native代码的java应用程序，大部分程序员都会问在java语言中的数据类型是怎么匹配到native编程语言例如c,c++中的数据类型。在上一章“Hello World”这个例子中，我们没有传递任何参数到native方法中，native方法也没有返回任何结果（返回NULL）。native方法只是简单地打印了一个信息并返回结束。 
  在练习中，大部分程序在native方法中都需...]]></description><category></category></item><item><title><![CDATA[抛开死丢丢，在Terminal下写一次JNI --HelloWorld]]></title><link>https://blog.youkuaiyun.com/xiaocajiyyd/article/details/80684433</link><guid>https://blog.youkuaiyun.com/xiaocajiyyd/article/details/80684433</guid><author>xiaocajiyyd</author><pubDate>Wed, 13 Jun 2018 20:56:26 +0800</pubDate><description><![CDATA[JNI -HelloWorld 实验过程步骤


编写一个类(HelloWorld.java),并申请native方法
使用javac 编译HelloWorld源文件。结果会得到一个HelloWorld.class 的文件
使用 javah -jni 来生成C的头文件并包含声明了native方法
编写c的源文件去实习native方法
将c文件编译生成dll或者so库
运行java程序，验证jni的...]]></description><category></category></item><item><title><![CDATA[Android源码分析实录-2硬件抽象层详解 (HAL)]]></title><link>https://blog.youkuaiyun.com/xiaocajiyyd/article/details/80529111</link><guid>https://blog.youkuaiyun.com/xiaocajiyyd/article/details/80529111</guid><author>xiaocajiyyd</author><pubDate>Thu, 31 May 2018 20:34:12 +0800</pubDate><description><![CDATA[
  某天，某大佬突然丢给我一本李忠良编著的Android源码分析实录，内容确实晦涩难懂。特，有此一记。




什么是HAL层

如名所示，HAL的主要功能是将硬件抽象化。它位于操作系统内核和硬件电路之间的接口层。HAL层隐藏了特定平台硬件接口细节，为操作系统提供虚拟硬件平台，使其具有硬件无关性。这样就可以使操作系统在多种平台上进行移植。





硬件支持的实现

Android系统对硬件的支...]]></description><category></category></item><item><title><![CDATA[调用startActivityForResult后，onActivityResult为什么立刻响应]]></title><link>https://blog.youkuaiyun.com/xiaocajiyyd/article/details/80270974</link><guid>https://blog.youkuaiyun.com/xiaocajiyyd/article/details/80270974</guid><author>xiaocajiyyd</author><pubDate>Thu, 10 May 2018 17:23:31 +0800</pubDate><description><![CDATA[A跳转B，为什么直接响应了A的onActivityResult函数。。。检查B的启动模式，，当activity在不同的栈中，android系统默认是无法传递数据的。]]></description><category></category></item><item><title><![CDATA[如何下载github上某一个模块，或者某一个目录的源代码]]></title><link>https://blog.youkuaiyun.com/xiaocajiyyd/article/details/79786691</link><guid>https://blog.youkuaiyun.com/xiaocajiyyd/article/details/79786691</guid><author>xiaocajiyyd</author><pubDate>Mon, 02 Apr 2018 11:22:33 +0800</pubDate><description><![CDATA[git clone  xxxxxx/tree/master/xxxxx ===&amp;gt; 替换 ===&amp;gt; svn co xxxxxx/trunk/xxxxx]]></description><category></category></item><item><title><![CDATA[Think In Java 11 持有对象 Holding]]></title><link>https://blog.youkuaiyun.com/xiaocajiyyd/article/details/79634833</link><guid>https://blog.youkuaiyun.com/xiaocajiyyd/article/details/79634833</guid><author>xiaocajiyyd</author><pubDate>Wed, 21 Mar 2018 18:14:10 +0800</pubDate><description><![CDATA[11.1 泛型和类型安全的容器


  通过使用泛型，可以在编译期内防止错误类型的对象放置到容器中。


Java SE5 之前编译器允许向容器中插入不正确的类型对象。 
使用Java泛型来创建类对象十分复杂，但通过应用预定义的泛型通常十分简单。 
例如保存Apple对象的ArrayList容器，声明ArrayList&amp;lt;Apple&amp;gt;,尖括号内可以是多个类型参数，指定了容器实例可以保存的...]]></description><category></category></item><item><title><![CDATA[apt-get -f install 都没有用了]]></title><link>https://blog.youkuaiyun.com/xiaocajiyyd/article/details/79571078</link><guid>https://blog.youkuaiyun.com/xiaocajiyyd/article/details/79571078</guid><author>xiaocajiyyd</author><pubDate>Thu, 15 Mar 2018 17:18:51 +0800</pubDate><description><![CDATA[今天ubuntu下 安装软件，出问题了。。。 
 
以为包的依赖问题 apt 命令行下报错 如上，apt还给了解决办法(如果办法有用，还写个毛blog记录)。。 
我的解决办法: 由于ubuntu apt最终安装包软件是用dpkg 
所以我把所有报错的软件，及其依赖全部 purge 了 
命令:         sudo dpkg --purge (***)   ...]]></description><category></category></item><item><title><![CDATA[Think In Java 10 内部类]]></title><link>https://blog.youkuaiyun.com/xiaocajiyyd/article/details/79493388</link><guid>https://blog.youkuaiyun.com/xiaocajiyyd/article/details/79493388</guid><author>xiaocajiyyd</author><pubDate>Fri, 09 Mar 2018 14:51:28 +0800</pubDate><description><![CDATA[名词解释


内部类: 一个类的定义再另外一个类的内部
外围类: 包含内部类的那个类
外部类: 指那些类相对于包含内部类的那个类




10.1 内部类的创建


  把类的定义置于外部类的里面




使用方法:


在外围类的内部，与使用普通类没有什么区别
典型情况， 在外围类的内部有一个方法，该方法返回一个指向内部类的引用。
想从外部类的非静态方法之外的任意位置创将某个内部类的对象，必须具...]]></description><category></category></item><item><title><![CDATA[Android ADB 命令（1）常用命令]]></title><link>https://blog.youkuaiyun.com/xiaocajiyyd/article/details/79378854</link><guid>https://blog.youkuaiyun.com/xiaocajiyyd/article/details/79378854</guid><author>xiaocajiyyd</author><pubDate>Mon, 26 Feb 2018 16:56:38 +0800</pubDate><description><![CDATA[基本安装程序


安转Apk程序 Install


adb install -r xxx.apk


安装Apk程序 Push


adb push &amp;lt;local&amp;gt;&amp;lt;remote&amp;gt;


获取手机文件pull




adb pull &amp;lt;remote&amp;gt;&amp;lt;local&amp;gt;


  区别： push命令是将文件写入手机，相对应的是pull  
  remot...]]></description><category></category></item><item><title><![CDATA[Android 开发 API指南 如何查找最佳匹配资源]]></title><link>https://blog.youkuaiyun.com/xiaocajiyyd/article/details/79360392</link><guid>https://blog.youkuaiyun.com/xiaocajiyyd/article/details/79360392</guid><author>xiaocajiyyd</author><pubDate>Sat, 24 Feb 2018 17:04:16 +0800</pubDate><description><![CDATA[
  当您请求要为其提供备用资源的资源时，Android 会根据当前的设备配置选择要在运行时使用的备用资源。


假设以下可绘制对象目录分别包含相同图像的不同版本:

drawable/
drawable-en/
drawable-fr-rCA/
drawable-en-port/
drawable-en-notouch-12key/
drawable-port-ldpi/
drawable-po...]]></description><category></category></item><item><title><![CDATA[Android EditText 监听输入完成]]></title><link>https://blog.youkuaiyun.com/xiaocajiyyd/article/details/79229075</link><guid>https://blog.youkuaiyun.com/xiaocajiyyd/article/details/79229075</guid><author>xiaocajiyyd</author><pubDate>Thu, 01 Feb 2018 15:27:38 +0800</pubDate><description><![CDATA[1 EditText 添加TextChangedListener

在 TextWatcher中的 afterTextChanged 回调中添加 延迟处理的线程 
editRunable 为 输入完成触发的任务



 override fun afterTextChanged(s: Editable) {
 if (editRunable != null) {]]></description><category></category></item><item><title><![CDATA[Android 输入银行卡 格式化]]></title><link>https://blog.youkuaiyun.com/xiaocajiyyd/article/details/79218975</link><guid>https://blog.youkuaiyun.com/xiaocajiyyd/article/details/79218975</guid><author>xiaocajiyyd</author><pubDate>Wed, 31 Jan 2018 16:30:16 +0800</pubDate><description><![CDATA[比较 微信支付宝 添加银行卡


实现每四位隔符号

Format 算法 代码 Kotlin

输入 待格式化串 ，分隔符号  
输出 格式化串 

 /**
  * 通用bankcardFormat
  */
    @JvmStatic fun newBankcardFormat(args: String,split: String) : String {
        var ret :]]></description><category></category></item><item><title><![CDATA[Thinking In Java 8 多态]]></title><link>https://blog.youkuaiyun.com/xiaocajiyyd/article/details/79149044</link><guid>https://blog.youkuaiyun.com/xiaocajiyyd/article/details/79149044</guid><author>xiaocajiyyd</author><pubDate>Wed, 24 Jan 2018 14:54:35 +0800</pubDate><description><![CDATA[8.1 向上转型


  将某一个对象的引用视为对其基类型的引用的做法被称为向上转型


向上转型之后，被转型视作为基类的引用，编译器如何知道这个引用是指向某个子类对象，或者说: 引用如何正确调用override方法 编译器是无法得知引用的具体指向的子类。

8.2 深入调用问题


8.2.1. 方法调用绑定

由编译器和连接程序实现 –前期绑定
运行时根据对象类型进行绑定 -后期绑定 
后期绑]]></description><category></category></item><item><title><![CDATA[Thinking In Java 5.5 清理：终结处理和垃圾回收]]></title><link>https://blog.youkuaiyun.com/xiaocajiyyd/article/details/79126039</link><guid>https://blog.youkuaiyun.com/xiaocajiyyd/article/details/79126039</guid><author>xiaocajiyyd</author><pubDate>Mon, 22 Jan 2018 11:09:19 +0800</pubDate><description><![CDATA[垃圾回收器

java垃圾回收器负责回收无用对象占据的内存资源。对于不是由 new 产生的”特殊”对象内存区域，垃圾回收器是不知道如何释放该对象的这块”特殊”内存。为了应对这种情况,java允许在类中定义一个名为finalize（）方法。


  finalize方法的工作原理： 在java垃圾回收器准备回收对象的内存时，它会首先调用对象的finalize（）方法，并在下一次垃圾回收动作中真正回收]]></description><category></category></item><item><title><![CDATA[DataBinding 官方文档 翻译笔记]]></title><link>https://blog.youkuaiyun.com/xiaocajiyyd/article/details/79075289</link><guid>https://blog.youkuaiyun.com/xiaocajiyyd/article/details/79075289</guid><author>xiaocajiyyd</author><pubDate>Fri, 19 Jan 2018 18:21:45 +0800</pubDate><description><![CDATA[Data Binding Library


  作用 : 在声明式布局的时候，最小化 页面布局和应用逻辑 之间的glue code (胶水代码)。


前提 
  1. Android 2.1（API level 7+） 
 2.  Gradle  1.5.0- alpha 1



环境搭建


确保已经安装了绑定库
配置gradle脚本 
开发工具 android studio 1.3 …]]></description><category></category></item><item><title><![CDATA[Bug记录： 多模块 binding文件引用问题]]></title><link>https://blog.youkuaiyun.com/xiaocajiyyd/article/details/79002490</link><guid>https://blog.youkuaiyun.com/xiaocajiyyd/article/details/79002490</guid><author>xiaocajiyyd</author><pubDate>Mon, 08 Jan 2018 14:27:09 +0800</pubDate><description><![CDATA[前言:]]></description><category></category></item><item><title><![CDATA[代码混淆ProGuard]]></title><link>https://blog.youkuaiyun.com/xiaocajiyyd/article/details/78874458</link><guid>https://blog.youkuaiyun.com/xiaocajiyyd/article/details/78874458</guid><author>xiaocajiyyd</author><pubDate>Fri, 22 Dec 2017 16:17:41 +0800</pubDate><description><![CDATA[一:产生的原因二:混淆方法三:混淆KEEP
  保留不被混淆
~~]]></description><category></category></item></channel></rss>