<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[pureChilder的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/pureChilder</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; pureChilder]]></copyright><item><title><![CDATA[Handler]]></title><link>https://blog.youkuaiyun.com/pureChilder/article/details/129410777</link><guid>https://blog.youkuaiyun.com/pureChilder/article/details/129410777</guid><author>pureChilder</author><pubDate>Wed, 08 Mar 2023 20:26:27 +0800</pubDate><description><![CDATA[例如，如果您正在后台线程中执行长时间运行的操作，并希望更新UI上的进度条，则可以使用处理程序将消息或可运行文件发布到UI线程以更新进度条。通过这些类的协作，Handler 可以方便地在主线程之外的线程中执行任务，比如在子线程中更新 UI 界面，或者在后台线程中执行一些耗时的操作等。：负责处理消息队列中的消息，每个线程只有一个 Looper，当 Handler 发送消息时，会将消息投递到 Looper 所在的消息队列中。：主要用于处理消息队列中的消息，可以将消息投递到消息队列中，并在主线程中处理消息。]]></description><category></category></item><item><title><![CDATA[Android 的发展前景]]></title><link>https://blog.youkuaiyun.com/pureChilder/article/details/129368346</link><guid>https://blog.youkuaiyun.com/pureChilder/article/details/129368346</guid><author>pureChilder</author><pubDate>Mon, 06 Mar 2023 18:47:00 +0800</pubDate><description><![CDATA[Android 的发展前景 ]]></description><category></category></item><item><title><![CDATA[Android app 包体积深度优化 3000字总结]]></title><link>https://blog.youkuaiyun.com/pureChilder/article/details/129368241</link><guid>https://blog.youkuaiyun.com/pureChilder/article/details/129368241</guid><author>pureChilder</author><pubDate>Mon, 06 Mar 2023 18:42:18 +0800</pubDate><description><![CDATA[Android app 包体积深度优化总结]]></description><category></category></item><item><title><![CDATA[关于android app架构的一点思考]]></title><link>https://blog.youkuaiyun.com/pureChilder/article/details/128010247</link><guid>https://blog.youkuaiyun.com/pureChilder/article/details/128010247</guid><author>pureChilder</author><pubDate>Thu, 24 Nov 2022 00:07:51 +0800</pubDate><description><![CDATA[android app 架构 思考]]></description><category></category></item><item><title><![CDATA[一些个人思考]]></title><link>https://blog.youkuaiyun.com/pureChilder/article/details/128007865</link><guid>https://blog.youkuaiyun.com/pureChilder/article/details/128007865</guid><author>pureChilder</author><pubDate>Wed, 23 Nov 2022 22:46:54 +0800</pubDate><description><![CDATA[产品设计 过度设计 思考 产品设计的改进]]></description><category></category></item><item><title><![CDATA[Linux下vim的使用]]></title><link>https://blog.youkuaiyun.com/pureChilder/article/details/122060638</link><guid>https://blog.youkuaiyun.com/pureChilder/article/details/122060638</guid><author>pureChilder</author><pubDate>Tue, 21 Dec 2021 15:06:12 +0800</pubDate><description><![CDATA[Linux下vim的使用vim 命令模式下vim 常用快捷键命令模式下的跳转和删除命令模式下的复制粘贴命令模式下的查找命令模式下的分屏
	vim 文件 // 打开文件 

vim 命令模式下
vim 常用快捷键
	 u  //撤销 恢复
	 i  //输入 ，光标不动
	 I  //输入，光标前面 
	 a  //输入 ，光标退后一个
	 A  //输入 ，光标到行末尾
	 s  //输入 ，光标删除所在字符 
	 S  //输入 ，光标删除所在整行

命令模式下的跳转和删除
	
	u  //撤销 恢复
	]]></description><category></category></item><item><title><![CDATA[Mac 环境变量配置]]></title><link>https://blog.youkuaiyun.com/pureChilder/article/details/122059668</link><guid>https://blog.youkuaiyun.com/pureChilder/article/details/122059668</guid><author>pureChilder</author><pubDate>Tue, 21 Dec 2021 13:02:06 +0800</pubDate><description><![CDATA[Mac 环境变量配置
1. cd 回到默认目录下
2. open .bash_profile
3. 例 jdk 环境配置：
	 		export ANDROID_HOME=/Users/lizhi/Library/Android/sdk
			export PATH=${PATH}:${ANDROID_HOME}/tools
			export PATH=${PATH}:${ANDROID_HOME}/platform-tools
4. 保存并退出
5.  source profile //【修改的生效】
]]></description><category></category></item><item><title><![CDATA[Mac 登陆服务器]]></title><link>https://blog.youkuaiyun.com/pureChilder/article/details/122059649</link><guid>https://blog.youkuaiyun.com/pureChilder/article/details/122059649</guid><author>pureChilder</author><pubDate>Tue, 21 Dec 2021 13:00:27 +0800</pubDate><description><![CDATA[Mac怎么登陆：
用自带的终端，输入 ssh 账户名@根据公网的ip

]]></description><category></category></item><item><title><![CDATA[Linux 基本命令大全]]></title><link>https://blog.youkuaiyun.com/pureChilder/article/details/122056271</link><guid>https://blog.youkuaiyun.com/pureChilder/article/details/122056271</guid><author>pureChilder</author><pubDate>Tue, 21 Dec 2021 12:00:57 +0800</pubDate><description><![CDATA[Linux基本命令]]></description><category></category></item><item><title><![CDATA[Android 高级UI3 RecyclerView使用ItemTouchHelper实现拖拽和侧滑删除并解析源码]]></title><link>https://blog.youkuaiyun.com/pureChilder/article/details/107712451</link><guid>https://blog.youkuaiyun.com/pureChilder/article/details/107712451</guid><author>pureChilder</author><pubDate>Fri, 31 Jul 2020 14:42:20 +0800</pubDate><description><![CDATA[实现拖拽和侧滑之前我门需要先了解一个recyclerview的辅助类ItemTouchHelper

ItemTouchHelper是一个工具类，可实现侧滑删除和拖拽移动，使用这个工具类需要RecyclerView和Callback。同时根据需要重写onMove和onSwiped方法。接下来就来讲述ItemTouchHelper的使用方法。

ItemTouchHelper 常用的函数列出如下：
    /**
     * 针对swipe和drag状态，设置不同状态(swipe、drag)下支持的方向
 ]]></description><category></category></item><item><title><![CDATA[Android 高级UI2 利用代理模式为RecyclerView添加head和footer]]></title><link>https://blog.youkuaiyun.com/pureChilder/article/details/107711637</link><guid>https://blog.youkuaiyun.com/pureChilder/article/details/107711637</guid><author>pureChilder</author><pubDate>Fri, 31 Jul 2020 14:05:00 +0800</pubDate><description><![CDATA[1.ListView添加HeaderView和FooterView源码分析
ListView关于HeaderView和FooterView的源码
  public void addHeaderView(View v) {
        addHeaderView(v, null, true);
    }

   public void addHeaderView(View v, Object data, boolean isSelectable) {
        final FixedViewInf]]></description><category></category></item><item><title><![CDATA[Android 高级UI1 Material Design]]></title><link>https://blog.youkuaiyun.com/pureChilder/article/details/107694888</link><guid>https://blog.youkuaiyun.com/pureChilder/article/details/107694888</guid><author>pureChilder</author><pubDate>Thu, 30 Jul 2020 17:48:34 +0800</pubDate><description><![CDATA[1.Material Design概述
Material Design，中文名：材料设计语言，是由Google推出的全新的设计语言，谷歌表示，这种设计语言旨在为手机、平板电脑、台式机和“其他平台”提供更一致、更广泛的“外观和感觉”。
简介
Material Design语言 的一些重要功能包括 系统字体Roboto的升级版本 ，同时颜色更鲜艳，动画效果更突出。杜拉特还简要谈到了新框架的一些变化——这个新框架也于今天在 google.com/design 公开发布。谷歌的想法是让谷歌平台上的开发者掌握这个新框]]></description><category></category></item><item><title><![CDATA[Kotlin-mvp-Rxjava-dagger2-Retrofit-EasyPermission+Okhttp 项目框架]]></title><link>https://blog.youkuaiyun.com/pureChilder/article/details/107687877</link><guid>https://blog.youkuaiyun.com/pureChilder/article/details/107687877</guid><author>pureChilder</author><pubDate>Thu, 30 Jul 2020 13:00:38 +0800</pubDate><description><![CDATA[Kotlin-mvp-Rxjava-dagger2-Retrofit-EasyPermission
Kotlin 版 快速搭建 Kotlin + MVP + RxJava + Retrofit + EasyPermission 的框架，方便快速开发新项目、减少开发成本
前言
前段时间学习了 Kotlin 的一些语法，然后就写了这个项目熟悉一下 Android的官方语言，总体下来，感觉比较爽，相比 Java 而言源代码行数有所减少、方法数也有所减少。
所以就搭了一个mvp的框架，来与大家一起分享
Kotlin]]></description><category></category></item><item><title><![CDATA[kotlin  解析Delegates 与lateinit之间的差异]]></title><link>https://blog.youkuaiyun.com/pureChilder/article/details/107666012</link><guid>https://blog.youkuaiyun.com/pureChilder/article/details/107666012</guid><author>pureChilder</author><pubDate>Wed, 29 Jul 2020 15:59:10 +0800</pubDate><description><![CDATA[The two models are similar, and one predates the other. Delegates.notNull() (api reference) is based on delegated properties and was the original, and later came lateinit (Late Initialized Properties). Neither cover all possible use cases and neither shou.]]></description><category></category></item><item><title><![CDATA[Kotlin object 和 companion object 的区别]]></title><link>https://blog.youkuaiyun.com/pureChilder/article/details/107634855</link><guid>https://blog.youkuaiyun.com/pureChilder/article/details/107634855</guid><author>pureChilder</author><pubDate>Tue, 28 Jul 2020 14:36:25 +0800</pubDate><description><![CDATA[一、 object关键字
object 关键字可以表达两种含义：一种是 对象表达式 ,另一种是 对象声明。
1、对象表达式
继承一个匿名对象
val textView = findViewById&lt;TextView&gt;(R.id.tv)
textView.setOnClickListener(object : OnClickListener {
        override fun onClick(p0: View?) {
            Toast.makeText(this@Tes]]></description><category></category></item><item><title><![CDATA[Kotlin 协程 - 协程取消篇]]></title><link>https://blog.youkuaiyun.com/pureChilder/article/details/107607034</link><guid>https://blog.youkuaiyun.com/pureChilder/article/details/107607034</guid><author>pureChilder</author><pubDate>Mon, 27 Jul 2020 11:03:53 +0800</pubDate><description><![CDATA[协程的任务的取消需要靠协程内部调用的协作支持，这就类似于我们线程中断以及对中断状态的响应一样。

1. 线程的中断
我们先从大家熟悉的话题讲起。线程有一个被废弃的 stop 方法，这个方法会让线程立即死掉，并且释放它持有的锁，这样会让它正在读写的存储处于一个不安全的状态，因此 stop 被废弃了。如果我们启动了一个线程并让它执行一些任务，但很快我们就后悔了，stop 还不让用，那该怎么办？
val thread = thread {
    ...
}
thread.stop() // !!! Depre.]]></description><category></category></item><item><title><![CDATA[Kotlin 协程 - 异常处理篇]]></title><link>https://blog.youkuaiyun.com/pureChilder/article/details/107606704</link><guid>https://blog.youkuaiyun.com/pureChilder/article/details/107606704</guid><author>pureChilder</author><pubDate>Mon, 27 Jul 2020 10:55:20 +0800</pubDate><description><![CDATA[1. 引子
我们在前面一篇文章当中提到了这样一个例子：
typealias Callback = (User) -&gt; Unit

fun getUser(callback: Callback){
    ...
}

我们通常会定义这样的回调接口来实现异步数据的请求，我们可以很方便的将它转换成协程的接口：
suspend fun getUserCoroutine() = suspendCoroutine&lt;User&gt; {
    continuation -&gt;
    getUser ]]></description><category></category></item><item><title><![CDATA[Kotlin 常量 静态方法]]></title><link>https://blog.youkuaiyun.com/pureChilder/article/details/107557714</link><guid>https://blog.youkuaiyun.com/pureChilder/article/details/107557714</guid><author>pureChilder</author><pubDate>Fri, 24 Jul 2020 13:51:36 +0800</pubDate><description><![CDATA[直接上代码，实例如下
  class StaticTestActivity {
      companion object {
           val  string1 = "string1"
           val  string2= "string2"
    }
}

或者

  class StaticTestActivity {
      companion object StaticParams{
            val  string1= "string1"
     ]]></description><category></category></item><item><title><![CDATA[Kotlin 协程 - 协程启动篇]]></title><link>https://blog.youkuaiyun.com/pureChilder/article/details/107534815</link><guid>https://blog.youkuaiyun.com/pureChilder/article/details/107534815</guid><author>pureChilder</author><pubDate>Thu, 23 Jul 2020 14:10:13 +0800</pubDate><description><![CDATA[java初转kotlin 启动线程的写法：

val myThread = thread {
//do what you want
}

这个 thread 方法有个参数 start 默认为 true，换句话说，这样创造出来的线程默认就是启动的，除非你实在不想让它马上投入工作：

val myThread = thread(start = false) {
//do what you want
}
//later on …
myThread.start()

协程的启动其实与上面写的thead启动有相似的地]]></description><category></category></item><item><title><![CDATA[Kotlin DSL 的 使用]]></title><link>https://blog.youkuaiyun.com/pureChilder/article/details/107529717</link><guid>https://blog.youkuaiyun.com/pureChilder/article/details/107529717</guid><author>pureChilder</author><pubDate>Thu, 23 Jul 2020 10:35:37 +0800</pubDate><description><![CDATA[Kotlin DSL 的强大功能 ：Gradle 的配置文件 build.gradle （Groovy），以及前面我们涉及到的Gradle Script Kotlin（Kotlin）、Anko（Kotlin）等，都是 DSL。我们可以看出，使用DSL的编程风格，可以让程序更加简单干净、直观简洁。当然，我们也可以创建自己的 DSL。
Android 中使用下面这样的 嵌套DSL 风格的代码来替代 XML 式风格的视图文件
        UI {
            // AnkoContext

   ]]></description><category></category></item></channel></rss>