<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[K-night的专栏]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/a296777513</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; a296777513]]></copyright><item><title><![CDATA[美国圣诞8日西海岸自驾游]]></title><link>https://blog.csdn.net/a296777513/article/details/120390136</link><guid>https://blog.csdn.net/a296777513/article/details/120390136</guid><author>a296777513</author><pubDate>Mon, 20 Sep 2021 12:47:49 +0800</pubDate><description><![CDATA[一晃已经1年半过去了，2020年年初在美国西海岸的旅游事情，回来后总说抽个时间记录一下，但是总是因为懒，一直往后脱，这一脱就是1年半，正好中秋没有出去玩，天气也不好，伴随着窗外的雨，把之前的旅游经历记录一下。
为什么我想把这段经历记录下来，我们努力的工作，努力的赚钱，就是为了一个更好的物质生活，但是慢慢的我们可能会忘记了初衷，陷入了每日“996”的泥潭中，而不自知，为了产品的完美，为了每一个细节，而绞尽脑汁、通宵加班。我想留住或者加深那些可以让我洒脱的生活经历。
在疫情前，入职Airbnb的新同事，都需要到]]></description><category></category></item><item><title><![CDATA[三年开发经验，抖音离职后，拿到Airbnb、快手、小红书、猿辅导等多家公司的offer]]></title><link>https://blog.csdn.net/a296777513/article/details/90728308</link><guid>https://blog.csdn.net/a296777513/article/details/90728308</guid><author>a296777513</author><pubDate>Thu, 07 May 2020 11:03:55 +0800</pubDate><description><![CDATA[前言
我这篇文章并不是简单的描述一些面试中的题，或者总结一些Android的知识，而是想记录我整个的想法和准备的过程，以及一些心得体会，让大家更加全面的去看待工作、跳槽和生活（从我的角度，当然肯定有不合理的地方，大家借鉴就好）
在字节跳动的两年时间中见证了抖音从百万日活到2.5亿、团队从10人到100多人的过程，技术上不同时期的选型以及迭代、沉淀和更替。项目上经历了一个工程到模块化再到组件化最后插...]]></description><category></category></item><item><title><![CDATA[Lottie 浅析]]></title><link>https://blog.csdn.net/a296777513/article/details/103316418</link><guid>https://blog.csdn.net/a296777513/article/details/103316418</guid><author>a296777513</author><pubDate>Fri, 29 Nov 2019 18:56:39 +0800</pubDate><description><![CDATA[Lottie 简介
Lottie是是一个可以解析Adobe After Effects使用BodyMovin插件导出的动画json文件，并且渲染到手机和网页上的库，Lottie支持Android，iOS，Web和Windows。
Lottie Android
如何使用
Lottie在Android仅支持Gradle的形式依赖，需要在你的build.gradle中添加以下的依赖
dependenci...]]></description><category></category></item><item><title><![CDATA[Gradle Task Configuration Avoidance]]></title><link>https://blog.csdn.net/a296777513/article/details/101712220</link><guid>https://blog.csdn.net/a296777513/article/details/101712220</guid><author>a296777513</author><pubDate>Sun, 29 Sep 2019 19:46:43 +0800</pubDate><description><![CDATA[这个章节介绍了处理任务时"避免配置"，并且解释了迁移构建以有效实用配置避免api的一些指导原则，这里描述的API与现有的API共存，但是现有的API将在以后的几个重要版本中被代替。在Gradle 5.1中，我们建议使用配置避免的API来创建自定义的Plugins。
配置避免API是如何工作的？
在nutshell中，该API允许构建避免在Gradle的配置阶段创建和配置任务的成本，而这些任务永远不...]]></description><category></category></item><item><title><![CDATA[优雅的减小包体积-优化图片]]></title><link>https://blog.csdn.net/a296777513/article/details/100164746</link><guid>https://blog.csdn.net/a296777513/article/details/100164746</guid><author>a296777513</author><pubDate>Fri, 30 Aug 2019 19:26:45 +0800</pubDate><description><![CDATA[前言
老话常谈，我们每次引入新的优化手段，都需要详细调研，明确优缺点，以及引入这项技术或者功能，能给现有的项目带来什么收益以及带来哪些不便。
首先我们要搞明白为什么要优化包体积？普遍认为的减少包体积有以下几个好处：

下载转换率，体积越小下载率越高
如果需要和厂商合作进行预装，由于预装空间是有限的，体积越小，成本越低
推广一般按照流量收费，同理，安装包体积越小，成本越低
减少应用占用手机的储存空间...]]></description><category></category></item><item><title><![CDATA[Paging Library-初探分页库]]></title><link>https://blog.csdn.net/a296777513/article/details/97409971</link><guid>https://blog.csdn.net/a296777513/article/details/97409971</guid><author>a296777513</author><pubDate>Fri, 26 Jul 2019 19:42:56 +0800</pubDate><description><![CDATA[简介
在2018年5月9日的谷歌开发者大会（Google I/O 2018) 中提出在去年发布的广受欢迎的架构组件上，进一步改进并推出了Jetpack。Jetpack能帮助我们更专注提升应用体验，加快应用开发速度，处理类似后台任务、UI 导航以及生命周期管理等。
发布的新版 Android Jetpack 组件中更新的内容包括 4 个部分：WorkManager、Paging、Navigation...]]></description><category></category></item><item><title><![CDATA[Gradle-初探代码注入Transform]]></title><link>https://blog.csdn.net/a296777513/article/details/90665134</link><guid>https://blog.csdn.net/a296777513/article/details/90665134</guid><author>a296777513</author><pubDate>Wed, 29 May 2019 09:33:50 +0800</pubDate><description><![CDATA[简介
本文主要介绍gradle打包过程中transform阶段，这里大概说下AOP(Aspect Oriented Programming)，这是一种面向切面的思想，预支对应的是OOP(Object Oriented Programming)面向对象编程，这里不展开说明。可以看下对AOP总结的思维导图

划重点
本篇文章主要介绍下面的几点：

Transform可以做什么
简单了解App打包过程，...]]></description><category></category></item><item><title><![CDATA[浅析Android插件化]]></title><link>https://blog.csdn.net/a296777513/article/details/89646625</link><guid>https://blog.csdn.net/a296777513/article/details/89646625</guid><author>a296777513</author><pubDate>Sun, 28 Apr 2019 21:42:14 +0800</pubDate><description><![CDATA[前言
在Android 9.0的jar包中，可以发现很多函数添加了@hide，这表示google显示了对@hide api的反射调用，上有政策，下有对策，我天朝人民的智慧是无穷尽的，具体的方案可以参考一种绕过Android P对非SDK接口限制的简单方法。按理说只要在Android 9.0的手机反射调用了@hide的api都不会work。但是我在华为的p20上测试，还是可以使用的，说明华为对goo...]]></description><category></category></item><item><title><![CDATA[基于ASM的组件化框架]]></title><link>https://blog.csdn.net/a296777513/article/details/88793108</link><guid>https://blog.csdn.net/a296777513/article/details/88793108</guid><author>a296777513</author><pubDate>Mon, 25 Mar 2019 14:06:07 +0800</pubDate><description><![CDATA[背景
我们在开发一个应用时，会随着时间、人员和需求的增多，我们的代码也会以一个非常快的速度在迭代，同时由于每个人的开发水平不一样，就会有各种各样的问题，如果一直在一个project中开发，很快演变成一个高耦合、臃肿和复杂的项目，所以我们就需要对项目进行优化，我们经常听的有模块化、组件化和插件化，这三者的差异可以看下这篇文章
本文主要介绍组件化，现有的组件化方案：

SPI(Service Prov...]]></description><category></category></item><item><title><![CDATA[apk打包流程]]></title><link>https://blog.csdn.net/a296777513/article/details/87915541</link><guid>https://blog.csdn.net/a296777513/article/details/87915541</guid><author>a296777513</author><pubDate>Mon, 25 Feb 2019 13:44:13 +0800</pubDate><description><![CDATA[aapt资源编译

编译assets目录和res/raw目录下的资源
编译res目录下的资源文件
给res目录下的每个资源赋予一个资源ID，生成resource.arsc资源索引文件
解析并编译AndroidMainifest.xml
资源打包成*.ap_，资源ID常量定义自R.java

资源索引
aapt给每一个非assets目录的资源定义一个资源ID，它是一个4字节（byte = 32bit...]]></description><category></category></item><item><title><![CDATA[字节跳动屏幕适配方案解读]]></title><link>https://blog.csdn.net/a296777513/article/details/86551207</link><guid>https://blog.csdn.net/a296777513/article/details/86551207</guid><author>a296777513</author><pubDate>Sat, 19 Jan 2019 12:57:25 +0800</pubDate><description><![CDATA[说来惭愧，这个方案在微信公众号推出来的时候，我才去了解我司自己的适配方案。字节跳动屏幕适配方案
重点

为什么要做屏幕适配
从数据上告诉你安卓手机屏幕的碎片化
我司的适配方案
适配中出现的问题
实际演练

为什么要做屏幕适配

在Android开发中，由于Android的碎片化严重，屏幕分辨率千奇百怪，想要在各种分辨率的设备上显示一致的效果，适配成本越来越高。虽然Android官方提供了dp单位来...]]></description><category></category></item><item><title><![CDATA[手摸手带你走进Kotlin Coroutine]]></title><link>https://blog.csdn.net/a296777513/article/details/85231013</link><guid>https://blog.csdn.net/a296777513/article/details/85231013</guid><author>a296777513</author><pubDate>Mon, 24 Dec 2018 11:33:37 +0800</pubDate><description><![CDATA[参考文章
kotlin官网
kotlin github
Roman Elizarov 视频（基于1.3之前的，一些用法已经改变，但是主要看原理和思想）
Roman Elizarov 视频深入（基于1.3之前的，一些用法已经改变，但是主要看原理和思想）
Roman Elizarov 基于1.3讲解
jakeWharton 的适配Retrofit的adapter
Coroutine的优势

简化异步编...]]></description><category></category></item><item><title><![CDATA[轻量级的MVVM]]></title><link>https://blog.csdn.net/a296777513/article/details/84498314</link><guid>https://blog.csdn.net/a296777513/article/details/84498314</guid><author>a296777513</author><pubDate>Sun, 25 Nov 2018 17:11:01 +0800</pubDate><description><![CDATA[背景
现在的项目中各种开发框架都有，MVC，MVP，MVVM。比较混乱，虽然也推出了MVVM，但是由于没有强制和代码历史的问题，大部分的时候还是使用之前的开发框架进行开发，所以现在整个项目的结构比较复杂和混乱。
先设立一个小目标，先在咱们组内，统一开发框架，实践出真知，在实践中检测这个框架的易用性，然后加以改造，在推广出去。
目标
老话再谈，在已有的项目中引入、更新框架，都是有成本的，这就需要分析...]]></description><category></category></item><item><title><![CDATA[Gradle-自定义plugin]]></title><link>https://blog.csdn.net/a296777513/article/details/83474210</link><guid>https://blog.csdn.net/a296777513/article/details/83474210</guid><author>a296777513</author><pubDate>Sun, 28 Oct 2018 13:57:14 +0800</pubDate><description><![CDATA[为什么要学习Gradle

Gradle目前已经应用于多个Android开发的技术体系中，比如构建系统、插件化、热修复和组件化，如果不了解Gradle，那么对于上述技术体系的了解会大打折扣

上述一段文字是比较传统的解释，我开始系统的学习gradle是因为，项目由于引入了组件化的开发模式，模块之间的通信就需要引入一种新的方式，之前一直使用的是SPI，但是在service比较多的时候会影响到冷起的时...]]></description><category></category></item><item><title><![CDATA[优雅的使用Kotlin]]></title><link>https://blog.csdn.net/a296777513/article/details/82851045</link><guid>https://blog.csdn.net/a296777513/article/details/82851045</guid><author>a296777513</author><pubDate>Wed, 26 Sep 2018 11:31:13 +0800</pubDate><description><![CDATA[优雅的使用Kotlin
这篇文章并不会从零开始来教你怎么使用Kotlin，Kotlin对于笔者来说也是一个新概念，由于大势所趋（Google所有的官方Demo都开始用Kotlin，各大第三方Library也开始适配Kotlin），所以不会Koltin寸步难行呀~，经过一段时间的学习和练习，对Kotlin有了一点浅薄的理解，在此记录下来，希望能给大家带来帮助。
开始进入主题，我打算从下面几个方面来给...]]></description><category></category></item><item><title><![CDATA[优雅的监听软键盘隐藏]]></title><link>https://blog.csdn.net/a296777513/article/details/81588229</link><guid>https://blog.csdn.net/a296777513/article/details/81588229</guid><author>a296777513</author><pubDate>Sat, 11 Aug 2018 16:43:28 +0800</pubDate><description><![CDATA[背景


Android软键盘的显示和隐藏，从开始做直播这块，就一直困扰着我。
从布局挤压，到输入区显示不全，再到闪屏以及卡顿，这里的坑让我跌倒无数次。
各种布局监听，回调，代码冗余、复杂、与业务强耦合无法复用，还是没有很好的解决键盘的弹出和隐藏
为了给用户更好的操作体验，决定找到一种最优解决方案。




科普基础知识-WindowSoftInputMode

Activity 的主窗口与包含屏...]]></description><category></category></item><item><title><![CDATA[Retrofit2源码阅读]]></title><link>https://blog.csdn.net/a296777513/article/details/81298438</link><guid>https://blog.csdn.net/a296777513/article/details/81298438</guid><author>a296777513</author><pubDate>Tue, 31 Jul 2018 10:59:56 +0800</pubDate><description><![CDATA[本次分析的要点： 
1. Retrofit中的动态代理和整个流程（Proxy、ServiceMethod、OkHttpCall） 
2. Retrofit中的转换器和适配器（Converter、CallAdapter）



Retrofit整体流程和动态代理

首先我们回顾一下retrofit的使用demo



   Retrofit retrofit = new Retrofit.Build...]]></description><category></category></item><item><title><![CDATA[OkHttp3源码分析]]></title><link>https://blog.csdn.net/a296777513/article/details/80843016</link><guid>https://blog.csdn.net/a296777513/article/details/80843016</guid><author>a296777513</author><pubDate>Thu, 28 Jun 2018 14:40:10 +0800</pubDate><description><![CDATA[重点

本文打算从三点来剖析OkHttp3： 
* 网络请求的整理流程-会使用 
* 拦截器模式-易扩展 
* 缓存和连接池-高性能



整体流程

我们在阅读某一类源码之前，首先要学会怎么使用，其次才是去了解内部的实现原理，实现方案上有什么技巧。

okhttp的一张流程图： 




官方用例


get使用方式




OkHttpClient client = new OkHttpCli...]]></description><category></category></item><item><title><![CDATA[绘制性能优化-ConstraintLayout]]></title><link>https://blog.csdn.net/a296777513/article/details/80529916</link><guid>https://blog.csdn.net/a296777513/article/details/80529916</guid><author>a296777513</author><pubDate>Thu, 31 May 2018 20:48:26 +0800</pubDate><description><![CDATA[ConstraintLayout是2016年Google发布的，这种新的布局方式支持了编辑器的方式，从布局和性能上都做了一定的优化，同时也增加了一些新的概念，例如约束链和设置大小比例。本文从将会从性能上与传统的布局进行比较，并且给出使用在项目上的建议。



Android的绘制流程

首先回顾一下Android的绘制流程，方便我们更好的理解ConstraintLayout的性能。

Androi...]]></description><category></category></item><item><title><![CDATA[Android 投影MAC，Vysor pro 破解]]></title><link>https://blog.csdn.net/a296777513/article/details/80066990</link><guid>https://blog.csdn.net/a296777513/article/details/80066990</guid><author>a296777513</author><pubDate>Tue, 24 Apr 2018 16:49:39 +0800</pubDate><description><![CDATA[投影工具

当我们需要做产品演示，或者需要在手机上做一些讲解时，需要让大家看到手机屏幕，这个时候就需要一款好的投影工具。 
现在比较好用的是：


Vysor是一款可以使用电脑操作安卓手机的谷歌浏览器插件，非常流程和方便，但是免费版的话，画面质量非常差，后面会介绍怎么破解。
AirDroid 是一款可以通过PC浏览器来管理Android手机的应用，Web网易和应用软件都可以做投影，也是非常方便。
...]]></description><category></category></item></channel></rss>