<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[LaterEqualsNever]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/ghost_Programmer</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ghost_Programmer]]></copyright><item><title><![CDATA[JAVA虚拟机 类加载机制理解]]></title><link>https://blog.youkuaiyun.com/ghost_Programmer/article/details/77084517</link><guid>https://blog.youkuaiyun.com/ghost_Programmer/article/details/77084517</guid><author>ghost_Programmer</author><pubDate>Fri, 11 Aug 2017 09:36:38 +0800</pubDate><description><![CDATA[前些时间坐车无聊翻手机的时候，无意中看到一篇之前别人写的关于分析JVM类加载机制的文章。其中作者列举了一段很有意思的代码，当时大概看了一下之后，也是很有兴趣的推测了一下运行结果，但其实过程中已经发现一些疑问，所以本身对结果就比较没把握。后来有空也是敲了一遍代码，发现果不其然真实的运行结果与自己想象的结果并不相同，囧~~ 周末大概回忆了一下，大概就是类似下面这样的代码逻辑：]]></description><category></category></item><item><title><![CDATA[理解Android图像处理-拍照、单/多图选择器及图像优化]]></title><link>https://blog.youkuaiyun.com/ghost_Programmer/article/details/76446014</link><guid>https://blog.youkuaiyun.com/ghost_Programmer/article/details/76446014</guid><author>ghost_Programmer</author><pubDate>Mon, 31 Jul 2017 15:56:08 +0800</pubDate><description><![CDATA[如以上DEMO截图所示效果，我们对于这种类似的功能肯定不算陌生，因为这可以说是实际开发中一类非常常见的功能需求了。而关于它们的实现，其实主要涉及到的知识面应该就是 Android当中的图像处理了。简单来说就比如：图像获取（例如常见的设置头像（获取单张图片）；发布动态/朋友圈(获取多张图片)）、图像显示以及图像优化等等。所以理解和掌握关于这方面的原理和相关技术、手段等肯定对我们是非常有帮助的。所以在这]]></description><category></category></item><item><title><![CDATA[再看Java泛型]]></title><link>https://blog.youkuaiyun.com/ghost_Programmer/article/details/74385251</link><guid>https://blog.youkuaiyun.com/ghost_Programmer/article/details/74385251</guid><author>ghost_Programmer</author><pubDate>Wed, 05 Jul 2017 10:19:42 +0800</pubDate><description><![CDATA[泛型对于稍有经验的Java使用者来说应该都不陌生，总的来说应该也算不上特别深奥的东西。但最近发现，如果不把关于它的很多细节和使用思路整理清晰，有的时候还真容易猛地一下犯糊涂。或者说想象一下，如果面试的时候涉及到相关的知识点，是否虽然你平时也经常都在使用它，却真不一定能条理清晰的讲清楚一二三。故特此整理，希望自己尽量能由浅入深 逐步递进的重新回顾关于泛型的一些细节 以及理清其关于其各种使用形式的关系和]]></description><category></category></item><item><title><![CDATA[深入一点 让细节帮你和Fragment更熟络]]></title><link>https://blog.youkuaiyun.com/ghost_Programmer/article/details/60866549</link><guid>https://blog.youkuaiyun.com/ghost_Programmer/article/details/60866549</guid><author>ghost_Programmer</author><pubDate>Wed, 08 Mar 2017 09:23:40 +0800</pubDate><description><![CDATA[有一段时间没有写博客了，作为2017年的第一篇，初衷起始于前段时间一个接触安卓开发还不算太长时间的朋友聊到的一个问题： 
“假设，想要对一个Fragment每次在隐藏/显示之间做状态切换时进行监听， 从而在这个时候去完成一些操作，应该怎么去实现呢？” 
相信大家听到这类问题第一反应都会觉得是很容易的。而又经过一番讨论过后，发现他的问题场景相对来说比较特殊一点的是： 
其想要监听的Fragment是嵌]]></description><category></category></item><item><title><![CDATA[自个儿写Android的下拉刷新/上拉加载控件 （续）]]></title><link>https://blog.youkuaiyun.com/ghost_Programmer/article/details/53032615</link><guid>https://blog.youkuaiyun.com/ghost_Programmer/article/details/53032615</guid><author>ghost_Programmer</author><pubDate>Fri, 04 Nov 2016 10:45:38 +0800</pubDate><description><![CDATA[本文算是对之前的一篇博文《自个儿写Android的下拉刷新/上拉加载控件》的续章，如果有兴趣了解更多的朋友可以先看一看之前的这篇博客。事实上之所以会有之前的那篇博文的出现，是起因于前段时间自己在写一个练手的App时很快就遇到这种需求。其实我们可以发现类似这样下拉刷新、上拉加载的功能正在变得越来越普遍，可以说如今基本上绝大多数的应用里面都会使用到。当然，随着Android的发展，已经有不少现成的可以实]]></description><category></category></item><item><title><![CDATA[一点点有助于巧用RecyclerView的小技巧]]></title><link>https://blog.youkuaiyun.com/ghost_Programmer/article/details/52931212</link><guid>https://blog.youkuaiyun.com/ghost_Programmer/article/details/52931212</guid><author>ghost_Programmer</author><pubDate>Wed, 26 Oct 2016 09:24:34 +0800</pubDate><description><![CDATA[在RecyclerView问世之前，ListView可能是我们使用频率最高的系统控件之一了。而随着Android的发展，虽然ListView依旧重要，但确实越来越多的时候大家都开始选择使用RecyclerView了。当然这也是事物发展的必然，个人觉得最重要的原因就是RecyclerView相对来说，确实灵活性更高。但是显然并不能说RecyclerView就优于ListView，二者各有优劣，我们应该]]></description><category></category></item><item><title><![CDATA[自个儿写Android的下拉刷新/上拉加载控件]]></title><link>https://blog.youkuaiyun.com/ghost_Programmer/article/details/52682252</link><guid>https://blog.youkuaiyun.com/ghost_Programmer/article/details/52682252</guid><author>ghost_Programmer</author><pubDate>Tue, 27 Sep 2016 16:58:26 +0800</pubDate><description><![CDATA[前段时间自己写了一个能够“通用”的，支持下拉刷新和上拉加载的自定义控件。可能现如今这已经不新鲜了，但有兴趣的朋友还是可以一起来看看的。
与通常的View配合使用（比如ImageView）与ListView配合使用与RecyclerView配合使用与SrcollView配合使用局部刷新(但想必这种需要实际应该还是不多的….)
好啦，效果大概就是这样。如果您看后觉得有一点兴趣。那么，以下是相关的信息：]]></description><category></category></item><item><title><![CDATA[用Canvas和属性动画造一只萌蠢的“小鬼”]]></title><link>https://blog.youkuaiyun.com/ghost_Programmer/article/details/52576797</link><guid>https://blog.youkuaiyun.com/ghost_Programmer/article/details/52576797</guid><author>ghost_Programmer</author><pubDate>Sun, 18 Sep 2016 18:37:59 +0800</pubDate><description><![CDATA[最近没事的时候想自己写一个支持下拉刷新，上拉加载的自定义View。写着写着，就觉得最常见的“一个圈转啊转”的进度条太普通了。 
于是，就想看看有没有更有趣的一点的加载效果。在GitHub上以”android loading”为关键字一搜索，就发现有作者开源了这么一个库：库的地址是：https://github.com/ldoublem/LoadingView。里面提供了很多有趣的加载动画(非常棒)，]]></description><category></category></item><item><title><![CDATA[动手写一个Android数据加载时界面状态切换的开源库]]></title><link>https://blog.youkuaiyun.com/ghost_Programmer/article/details/52489996</link><guid>https://blog.youkuaiyun.com/ghost_Programmer/article/details/52489996</guid><author>ghost_Programmer</author><pubDate>Fri, 09 Sep 2016 19:12:01 +0800</pubDate><description><![CDATA[文章伊始，让我们先静心回忆三秒：在我们写过的Android应用当中，是不是有很多地方都离不开数据加载的需求呢？如果是，那么我们首先来看下图：好的，从这里开始我们暂时忘记自己是一个安卓开发者，而是以一个不懂技术的APP使用者的身份来继续接下来的交流。如果是作为一个使用者，那么现在我们的内心应该是懵逼的。因为自打我们打开这个应用进入到第一个界面后，就发现没有任何内容。 
这个时我们可能会开始推测：什么鬼]]></description><category></category></item><item><title><![CDATA[带着疑惑走进Dagger2]]></title><link>https://blog.youkuaiyun.com/ghost_Programmer/article/details/52416432</link><guid>https://blog.youkuaiyun.com/ghost_Programmer/article/details/52416432</guid><author>ghost_Programmer</author><pubDate>Fri, 02 Sep 2016 19:33:45 +0800</pubDate><description><![CDATA[Dagger2是一款最初由Square公司研发，后交由Google进行维护管理的依赖注入（Dependency Injection DI）框架。 
我想之所以其越来越受欢迎，一是其自身的优异。二是当我们了解了对它的使用之后，就会发现它和Android现在盛行的MVP架构可以说是天生一对。 
于是当我们看到越来越多的地方开始提及Dagger2这个东西，难免自己就会想要去尝试一下。那么，当我们看着一大堆]]></description><category></category></item><item><title><![CDATA[Android网络请求库 - Say hello to retrofit]]></title><link>https://blog.youkuaiyun.com/ghost_Programmer/article/details/52372065</link><guid>https://blog.youkuaiyun.com/ghost_Programmer/article/details/52372065</guid><author>ghost_Programmer</author><pubDate>Tue, 30 Aug 2016 18:52:42 +0800</pubDate><description><![CDATA[回顾：
  
  Android网络请求库 - Say hello to OkHttp
  Android网络请求库 - Say hello to Volley
  
之前对Android里常用的网络请求库OkHttp与Volley做了简单的学习归纳与总结，这里看这个系列中的最后一篇，来认识一下Retrofit。 
Retrofit可以认为是OkHttp的“升级版”。之所以这么说，是因为其内部默认正]]></description><category></category></item><item><title><![CDATA[Android网络请求库 - Say hello to Volley]]></title><link>https://blog.youkuaiyun.com/ghost_Programmer/article/details/52333877</link><guid>https://blog.youkuaiyun.com/ghost_Programmer/article/details/52333877</guid><author>ghost_Programmer</author><pubDate>Sat, 27 Aug 2016 10:12:45 +0800</pubDate><description><![CDATA[书接上篇 《Android网络请求库 - Say hello to OkHttp》，今天接着来简单的看一下常用的网络请求库中的第二种库：Volley。
  
  Volley是谷歌2013年在I/O大会期间推出的网络库。开发Volley是因为在Android SDK中缺乏一个用户体验良好的网络加载类。
  Volley自身的特点在于：适合去进行数据量不大，但通信频繁的网络操作；而对于大数据量的网络操]]></description><category></category></item><item><title><![CDATA[Android网络请求库 - Say hello to OkHttp]]></title><link>https://blog.youkuaiyun.com/ghost_Programmer/article/details/52253359</link><guid>https://blog.youkuaiyun.com/ghost_Programmer/article/details/52253359</guid><author>ghost_Programmer</author><pubDate>Fri, 19 Aug 2016 18:24:17 +0800</pubDate><description><![CDATA[引言
  网络请求是Android开发中必不可少的一块，通常我们可以用原生的HttpUrlConnection或者Apache封装的HttpClient来完成网络请求的实现。
  
  如今来说，HttpClient在API23问世后也被废弃了。也就是说Google现在更推荐我们使用HttpUrlConnection来实现Http网络请求。
  
  但以Http请求来说，大多数时候都是遵循一定的套]]></description><category></category></item><item><title><![CDATA[自己动手写一个轻量级的Android网络请求框架]]></title><link>https://blog.youkuaiyun.com/ghost_Programmer/article/details/52130267</link><guid>https://blog.youkuaiyun.com/ghost_Programmer/article/details/52130267</guid><author>ghost_Programmer</author><pubDate>Fri, 05 Aug 2016 16:19:42 +0800</pubDate><description><![CDATA[最近有空在看《App研发录》一书，良心之作。书中第一部分第二章节讲了不少关于网络底层封装的知识，看后觉得学到了不少干货。 
索性自己也动手完成了一个非常轻量级的网络请求框架，从该书中获得了不少帮助。特此记录，回顾一下思路，整理收获。OK，一起来看。就如书中所言，通常我们可以通过AsyncTask来进行网络请求的处理。而不少网络请求框架的底层也正是基于AsyncTask来进行封装的。 
显然Async]]></description><category></category></item><item><title><![CDATA[从源码一次彻底理解Android的消息机制]]></title><link>https://blog.youkuaiyun.com/ghost_Programmer/article/details/52038201</link><guid>https://blog.youkuaiyun.com/ghost_Programmer/article/details/52038201</guid><author>ghost_Programmer</author><pubDate>Tue, 26 Jul 2016 17:59:37 +0800</pubDate><description><![CDATA[情景重现        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try {
                    Thread.sleep(5 * 1000);]]></description><category></category></item><item><title><![CDATA[一步步理解Android事件分发机制]]></title><link>https://blog.youkuaiyun.com/ghost_Programmer/article/details/51985692</link><guid>https://blog.youkuaiyun.com/ghost_Programmer/article/details/51985692</guid><author>ghost_Programmer</author><pubDate>Thu, 21 Jul 2016 18:57:36 +0800</pubDate><description><![CDATA[回想一下，通常在Android开发中，我们最常接触到的是什么东西？显然除了Activity以外，就是各种形形色色的控件(即View)了。 
与此同时，一个App诞生的起因，终究是根据不同需求完成与用户的各种交互。而所谓的交互，本质就是友好的响应用户的各种操作行为。 
所以说，有很多时候，一个控件(View)出现在屏幕当中，通常不会是仅仅为了摆设，而是还要能够负责响应用户的操作。 
以最基本的例子而言]]></description><category></category></item><item><title><![CDATA[Java并发编程 - 逐级深入 看线程的中断]]></title><link>https://blog.youkuaiyun.com/ghost_Programmer/article/details/51953346</link><guid>https://blog.youkuaiyun.com/ghost_Programmer/article/details/51953346</guid><author>ghost_Programmer</author><pubDate>Tue, 19 Jul 2016 10:16:24 +0800</pubDate><description><![CDATA[最近有足够的空闲时间 去东看看西看看，突然留意到在Java的并发编程中，有关线程中断的，以前初学时一直没弄清楚的一些小东西。 
于是，刚好把收获简单的总结一下，通过此文来总结记录下来。从源码看线程的状态在开始分析线程的中断工作之前，我们肯定要先留意一个点，那就是肯定是有开启，才会有与之对应的中断工作出现。 
开启一个线程的工作，相信每个Javaer都烂熟于心。它很简单，new一个thread对象，然]]></description><category></category></item><item><title><![CDATA[Java断点续传实现原理很简单]]></title><link>https://blog.youkuaiyun.com/ghost_Programmer/article/details/51923895</link><guid>https://blog.youkuaiyun.com/ghost_Programmer/article/details/51923895</guid><author>ghost_Programmer</author><pubDate>Sat, 16 Jul 2016 12:59:13 +0800</pubDate><description><![CDATA[原理解析在开发当中，“断点续传”这种功能很实用和常见，听上去也是比较有“逼格”的感觉。所以通常我们都有兴趣去研究研究这种功能是如何实现的？  
以Java来说，网络上也能找到不少关于实现类似功能的资料。但是呢，大多数都是举个Demo然后贴出源码，真正对其实现原理有详细的说明很少。  
于是我们在最初接触的时候，很可能就是直接Crtl + C/V代码，然后捣鼓捣鼓，然而最终也能把效果弄出来。但初学时这]]></description><category></category></item><item><title><![CDATA[由浅入深 细细体会Android的视图滚动]]></title><link>https://blog.youkuaiyun.com/ghost_Programmer/article/details/51891867</link><guid>https://blog.youkuaiyun.com/ghost_Programmer/article/details/51891867</guid><author>ghost_Programmer</author><pubDate>Tue, 12 Jul 2016 19:32:53 +0800</pubDate><description><![CDATA[其实对于接触过Android开发的人来说，视图的滑动并不陌生，因为这一功能特性可以说是随处可见。 
常用的就例如ScrollView、HorizontalScrollView、ListView，还有熟悉的ViewPager等控件，就都支持这一特性。之所以这一类的控件在Android系统中如此受欢迎，其实也不难想象，最显而易见的： 
手机的屏幕（可视区域）是十分有限的，那么如何在有限的区域内提供给用户]]></description><category></category></item><item><title><![CDATA[从源码切入 透彻理解Android的weight属性]]></title><link>https://blog.youkuaiyun.com/ghost_Programmer/article/details/51810216</link><guid>https://blog.youkuaiyun.com/ghost_Programmer/article/details/51810216</guid><author>ghost_Programmer</author><pubDate>Sat, 02 Jul 2016 10:54:51 +0800</pubDate><description><![CDATA[最近在看一本古董书《50 Android Hacks》，而书中开篇的第一个Hack就是”使用weight属性实现视图的居中现实“。

事实上weight是一个使用简单，但却又十分强大的属性。但关于其的实现原理和使用细节我们却不一定真正深入的进行过理解。 
今天我们就来由浅入深，从源码中去好好的研究研究这个东西。看看它有哪些可能被我们忽视的地方。

以上述书中的案例来说，它的需求很简单，请实现“让一]]></description><category></category></item></channel></rss>