<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[very_caiing]]></title><description><![CDATA[看不清未来 就做好现在]]></description><link>https://blog.youkuaiyun.com/very_caiing</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; very_caiing]]></copyright><item><title><![CDATA[Google应用框架实践]]></title><link>https://blog.youkuaiyun.com/very_caiing/article/details/73321894</link><guid>https://blog.youkuaiyun.com/very_caiing/article/details/73321894</guid><author>very_caiing</author><pubDate>Fri, 16 Jun 2017 10:12:50 +0800</pubDate><description><![CDATA[相信大家最近应该看过一篇比较火的文章：Google 官方应用架构的最佳实践指南, 本文就是按照官方应用架构写的一个实例Drible， 也是基于我之前写的Dribbble的demo，打算重新写一个Dribbble App。
下面就再总(翻)结(译)一下新的架构的亮点，以及我个人在使用过程中的体验。
新推出的框架主要是围绕以下两条准则，开发体验更棒的App：
第一条准则：「不要在应用程序组件中保存任何]]></description><category></category></item><item><title><![CDATA[一个图片列表的问题（Glide）]]></title><link>https://blog.youkuaiyun.com/very_caiing/article/details/73321892</link><guid>https://blog.youkuaiyun.com/very_caiing/article/details/73321892</guid><author>very_caiing</author><pubDate>Fri, 16 Jun 2017 10:12:47 +0800</pubDate><description><![CDATA[这篇文章来源是测试发现的一个bug， 为了解决这个问题，深入分析了部分Glide源码和Android View的绘制原理，在这里做个记录。
问题描述
这个bug是这样的：在商品详情页面，图片展示详情的时候，会出现如下问题：

左边是刚进入详情页面的时候， 右边是详情页面往下滑动，再回到原来的位置展示的情况。会发现：左边是正常的，图片所有内容都正常展示在view中，而右边，图好像“变大“了，部分内容]]></description><category></category></item><item><title><![CDATA[Android源码——Activity启动流程]]></title><link>https://blog.youkuaiyun.com/very_caiing/article/details/73321891</link><guid>https://blog.youkuaiyun.com/very_caiing/article/details/73321891</guid><author>very_caiing</author><pubDate>Fri, 16 Jun 2017 10:12:43 +0800</pubDate><description><![CDATA[之前在Mac环境下搭建了Android源码，接下来会在简书记录阅读一些经典场景的源码过程， 本文主要是在阅读启动Activity源码过程中做的一些记录， 其中主要的思路是参考罗老师的文章：Android应用程序启动过程源代码分析
几个重要概念
在看Activity启动源码之前，先看几个概念， 这几个是理解Activity启动流程的重要概念：
ActivityManagerService:  AMS]]></description><category></category></item><item><title><![CDATA[Mac 10.12 编译Android源码]]></title><link>https://blog.youkuaiyun.com/very_caiing/article/details/73321890</link><guid>https://blog.youkuaiyun.com/very_caiing/article/details/73321890</guid><author>very_caiing</author><pubDate>Fri, 16 Jun 2017 10:12:40 +0800</pubDate><description><![CDATA[折腾了一个多星期，终于把源码编译导入AS了， 本文主要记录源码编译过程中的几个问题。
1，首先是源码下载的问题， 问题不大，直接使用清华镜像下载，参考：https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/要注意的是，现在网上有些文章记录的有点早， 还在使用git://链接，但是已经不支持了， 清华镜像的公告：2016-06-24 : 关闭 git:// 协]]></description><category></category></item><item><title><![CDATA[LruCache]]></title><link>https://blog.youkuaiyun.com/very_caiing/article/details/73321888</link><guid>https://blog.youkuaiyun.com/very_caiing/article/details/73321888</guid><author>very_caiing</author><pubDate>Fri, 16 Jun 2017 10:12:37 +0800</pubDate><description><![CDATA[LruCache
图片缓存常用的容器， Least Recently Used Cache（最近最少使用）。顾名思义，这个缓存算法的亮点： 当缓存内容过多的时候， 将最近最少使用的缓存对象移除；
先看看LruCache的数据结构：
public class LruCache {
    private final LinkedHashMap map;

    /** Size of this c]]></description><category></category></item><item><title><![CDATA[Java垃圾回收机制]]></title><link>https://blog.youkuaiyun.com/very_caiing/article/details/73321886</link><guid>https://blog.youkuaiyun.com/very_caiing/article/details/73321886</guid><author>very_caiing</author><pubDate>Fri, 16 Jun 2017 10:12:34 +0800</pubDate><description><![CDATA[最近在啃《深入理解Java虚拟机》， 本文总结了垃圾回收使用的算法。
概述
Lisp 第一门真正使用内存动态分配和垃圾收集技术的语言；为什么学习垃圾回收机制： 当垃圾收集成为系统达到更高并发量的瓶颈时， 我们就需要对这些自动化的技术实施必要的调节和监控。
垃圾收集的3件事情：

哪些内存需要回收；
什么时候回收；
如何回收

哪些内存需要回收
首先总结一下Java虚拟机主要的内存区域（主要在第2章]]></description><category></category></item><item><title><![CDATA[RxJava深入]]></title><link>https://blog.youkuaiyun.com/very_caiing/article/details/73321883</link><guid>https://blog.youkuaiyun.com/very_caiing/article/details/73321883</guid><author>very_caiing</author><pubDate>Fri, 16 Jun 2017 10:12:31 +0800</pubDate><description><![CDATA[今天在公司做了一个RxJava分享， 为了准备这个分享， 阅读了RxJava的源码， 对于Rxjava的使用也有了更深刻的认识， 进一步改进了项目中的代码， 有些地方会惊叹：原来用RxJava这么简单！！下面就几个方面再记录一下自己RxJava使用的心得]]></description><category></category></item><item><title><![CDATA[Retrofit+RxJava总结]]></title><link>https://blog.youkuaiyun.com/very_caiing/article/details/73321882</link><guid>https://blog.youkuaiyun.com/very_caiing/article/details/73321882</guid><author>very_caiing</author><pubDate>Fri, 16 Jun 2017 10:12:28 +0800</pubDate><description><![CDATA[上次发布的文章Retrofit2.0+RxJava初步 简单介绍了Retrofit2.0与RxJava结合使用， 前段时间在公司的项目中引入了Retrofit框架，今天对项目中碰到的问题和一些常见的使用场景做个总结。
本文主要包含以下2个内容：

HttpResult统一处理返回结果
网络请求与生命周期绑定
retrofit缓存及日志

统一处理返回结果
在项目中一般与后台定义好返回的json数据]]></description><category></category></item><item><title><![CDATA[《Android开发艺术》读书笔记－消息机制]]></title><link>https://blog.youkuaiyun.com/very_caiing/article/details/73321881</link><guid>https://blog.youkuaiyun.com/very_caiing/article/details/73321881</guid><author>very_caiing</author><pubDate>Fri, 16 Jun 2017 10:12:25 +0800</pubDate><description><![CDATA[之前写了一篇文章Android Handler总结 ,介绍了Handler的基本用法和基本原理。本文是读完Android的消息机制的读书笔记， 从源码分析了消息传递的机制， 对于Handler，以及Looper和MessageQueue有了更深刻的理解。
消息机制的概述
主要申明几个概念，也是接上一篇Android Handler总结 中的原理的内容，再阐述几个重要的概念：

Handler, 作]]></description><category></category></item><item><title><![CDATA[Retrofit2.0+RxJava初步]]></title><link>https://blog.youkuaiyun.com/very_caiing/article/details/73321878</link><guid>https://blog.youkuaiyun.com/very_caiing/article/details/73321878</guid><author>very_caiing</author><pubDate>Fri, 16 Jun 2017 10:12:22 +0800</pubDate><description><![CDATA[之前看了StormZhang的网络请求哪家强， 里面有详细的主流网络请求框架对比，最近在自己的项目中引入了Retrofit2.0， 同时配合使用RxJava，替换了原先OkHttp。
本文对于基本的实现做了总结，也有一些碰到的问题，以及Retrofit2.0相对1.0版本的一些变化
依赖项
compile 'io.reactivex:rxandroid:1.2.1'
compile 'io.rea]]></description><category></category></item><item><title><![CDATA[Android Handler总结]]></title><link>https://blog.youkuaiyun.com/very_caiing/article/details/73321876</link><guid>https://blog.youkuaiyun.com/very_caiing/article/details/73321876</guid><author>very_caiing</author><pubDate>Fri, 16 Jun 2017 10:12:19 +0800</pubDate><description><![CDATA[Handler是什么
Handler是Android提供的用来更新UI的一套机制， 也是一套消息处理机制，我们可以通过它来发送和处理消息。Handler在Android Framework中应用也非常广泛： 其中，Activity生命周期回调的方法被调用的过程就是通过Handler来实现的。
为什么要使用Handler
Android设计的时候就封装了一套消息创建，传递，处理机制，如果不遵循这样的]]></description><category></category></item><item><title><![CDATA[Android UI架构初步]]></title><link>https://blog.youkuaiyun.com/very_caiing/article/details/73321872</link><guid>https://blog.youkuaiyun.com/very_caiing/article/details/73321872</guid><author>very_caiing</author><pubDate>Fri, 16 Jun 2017 10:12:17 +0800</pubDate><description><![CDATA[项目中从最初的MVC架构演变为MVVM架构，本文主要通过Google推出的官方实例，学习MVP架构。
MVP/MVC对比

对比图
MVP架构：View不直接与Model交互，而是通过与Presenter交互来与Model间接交互。Presenter与View的交互是通过接口来进行的。通常View与Presenter是一对一的，但复杂的View可能绑定多个Presenter来处理逻辑。
MVC架构]]></description><category></category></item><item><title><![CDATA[《Android开发艺术》读书笔记－RemoteView]]></title><link>https://blog.youkuaiyun.com/very_caiing/article/details/73321871</link><guid>https://blog.youkuaiyun.com/very_caiing/article/details/73321871</guid><author>very_caiing</author><pubDate>Fri, 16 Jun 2017 10:12:14 +0800</pubDate><description><![CDATA[RemoteView 在Android中的使用场景有两种： 通知栏和桌面小部件。《Android开发艺术》第5章重点分析了通过RemoteViews实现远程更新（通知栏和小部件）界面。
1 RemoteViews应用
通知栏Notification相关类，做了更新，例子很简单，最新的API代码可以参考官方教程关于RemoteViews更新界面的代码：
RemoteViews remoteViews]]></description><category></category></item><item><title><![CDATA[网络加载图片对比（Fresco/Glide）]]></title><link>https://blog.youkuaiyun.com/very_caiing/article/details/73321870</link><guid>https://blog.youkuaiyun.com/very_caiing/article/details/73321870</guid><author>very_caiing</author><pubDate>Fri, 16 Jun 2017 10:12:10 +0800</pubDate><description><![CDATA[Glide 与 Picasso对比：
https://inthecheesefactory.com/blog/get-to-know-glide-recommended-by-google/en
项目中使用Fresco已经一年多了，碰到了一些坑， 但总体来说还是很强大。我参考了上面的对比方式，将Fresco与Glide做了类似比较
Fresco vs Glide
功能
要从功能上来说， fresc]]></description><category></category></item><item><title><![CDATA[python 多线程 锁]]></title><link>https://blog.youkuaiyun.com/very_caiing/article/details/73321869</link><guid>https://blog.youkuaiyun.com/very_caiing/article/details/73321869</guid><author>very_caiing</author><pubDate>Fri, 16 Jun 2017 10:12:08 +0800</pubDate><description><![CDATA[参考：《Python cookbook》12章启动和停止线程start 启动线程；is_alive 判断是否已经结束；join 请求连接某个线程， 等待该线程结束，才退出join函数；daemon参数， 守护线程，该线程无法被连接，主线程结束后自动销毁。(2.7不适用)终止线程：需要自己构建终止操作， 一般在while循环中添加标识符来判断是否需要停止线程。一个demo, 当terminate()]]></description><category></category></item><item><title><![CDATA[《Android开发艺术》读书笔记2-View工作原理]]></title><link>https://blog.youkuaiyun.com/very_caiing/article/details/73321868</link><guid>https://blog.youkuaiyun.com/very_caiing/article/details/73321868</guid><author>very_caiing</author><pubDate>Fri, 16 Jun 2017 10:12:05 +0800</pubDate><description><![CDATA[ViewRoot & DecorView基本概念ViewRoot对应ViewRootImpl类，它是连接WindowManager和DecorView的纽带，View的三大流程均通过ViewRoot来完成。ActivityThread中，Activity创建完成后，会将DecorView添加到Window中，同时创建ViewRootImpl对象，并建立ViewRootImpl与DecorView的]]></description><category></category></item><item><title><![CDATA[《Android开发艺术》读书笔记（View的事件体系）]]></title><link>https://blog.youkuaiyun.com/very_caiing/article/details/50939563</link><guid>https://blog.youkuaiyun.com/very_caiing/article/details/50939563</guid><author>very_caiing</author><pubDate>Sun, 20 Mar 2016 22:40:12 +0800</pubDate><description><![CDATA[《Android开发艺术》是今年上半年的读书计划之一， 本文是第三章”View的事件体系”的总结。View基础知识
View是Android所有控件的基类，ViewGroup即是一组View。
View的参数位置， 由四个顶点的坐标确定： top, left, right, bottom.(坐标是相对于View的父容器)；Android3.0以后增加了x, y(左上角的坐标) translation]]></description><category></category></item><item><title><![CDATA[React Native & Code Push]]></title><link>https://blog.youkuaiyun.com/very_caiing/article/details/50924379</link><guid>https://blog.youkuaiyun.com/very_caiing/article/details/50924379</guid><author>very_caiing</author><pubDate>Fri, 18 Mar 2016 16:03:42 +0800</pubDate><description><![CDATA[本文主要实践了在已有项目中集成React native, 并且通过code push实现更新ReactNative页面。React NativeReact Native 结合了 Web 应用和 Native 应用的优势，可以使用 JavaScript 来开发 iOS 和 Android 原生应用。在 JavaScript 中用 React 抽象操作系统原生的 UI 组件，代替 DOM 元素来渲染等。]]></description><category></category></item><item><title><![CDATA[Fresco网络图片加载]]></title><link>https://blog.youkuaiyun.com/very_caiing/article/details/48378351</link><guid>https://blog.youkuaiyun.com/very_caiing/article/details/48378351</guid><author>very_caiing</author><pubDate>Fri, 11 Sep 2015 20:50:54 +0800</pubDate><description><![CDATA[几个月前在公司项目中引入了Facebook的图片加载组件Fresco]]></description><category></category></item><item><title><![CDATA[Volley NegativeArraySizeException 解决]]></title><link>https://blog.youkuaiyun.com/very_caiing/article/details/46241531</link><guid>https://blog.youkuaiyun.com/very_caiing/article/details/46241531</guid><author>very_caiing</author><pubDate>Fri, 29 May 2015 22:01:39 +0800</pubDate><description><![CDATA[今天在百度统计看项目上有一个crash比较高的bug：
  java.lang.NegativeArraySizeException: -1092   at 
  com.android.volley.toolbox.DiskBasedCache.streamToBytes(DiskBasedCache.java:322) 
    at 
  com.android.volley.toolbox.]]></description><category></category></item></channel></rss>