<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[yaozq的android开发]]></title><description><![CDATA[永不止步]]></description><link>https://blog.youkuaiyun.com/yaolingrui</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; yaolingrui]]></copyright><item><title><![CDATA[Understanding Android Custom Attributes: An Article]]></title><link>https://blog.youkuaiyun.com/yaolingrui/article/details/21012899</link><guid>https://blog.youkuaiyun.com/yaolingrui/article/details/21012899</guid><author>yaolingrui</author><pubDate>Tue, 11 Mar 2014 14:20:31 +0800</pubDate><description><![CDATA[Understanding Android Custom Attributes: An Article

Being able to modify behavior of a run time component through configruation is good architecture. Take a look at a text view declaration in an An]]></description><category></category></item><item><title><![CDATA[《Expert Android》关键点摘录之二]]></title><link>https://blog.youkuaiyun.com/yaolingrui/article/details/14001295</link><guid>https://blog.youkuaiyun.com/yaolingrui/article/details/14001295</guid><author>yaolingrui</author><pubDate>Fri, 01 Nov 2013 14:55:46 +0800</pubDate><description><![CDATA[The draw traversal is implemented in the View's draw() method. The protocol implemented by this method is:
	Draw the background
	Draw view's content by delegating to onDraw()
	Draw children by dele]]></description><category></category></item><item><title><![CDATA[《Expert Android》关键点摘录之一：Exploring Custom Views]]></title><link>https://blog.youkuaiyun.com/yaolingrui/article/details/13274953</link><guid>https://blog.youkuaiyun.com/yaolingrui/article/details/13274953</guid><author>yaolingrui</author><pubDate>Sun, 27 Oct 2013 22:31:26 +0800</pubDate><description><![CDATA[一、In Android you can customize views in three ways:
1、Custom views （by extending the View class）;
2、Compound views/controls（by composing other controls through extending one of existing Layout class]]></description><category></category></item><item><title><![CDATA[Eclipse快捷键大全(转载)]]></title><link>https://blog.youkuaiyun.com/yaolingrui/article/details/7903579</link><guid>https://blog.youkuaiyun.com/yaolingrui/article/details/7903579</guid><author>yaolingrui</author><pubDate>Fri, 24 Aug 2012 13:20:10 +0800</pubDate><description><![CDATA[原文：http://www.blogjava.net/action/articles/17339.html
 
Ctrl+1 快速修复(最经典的快捷键,就不用多说了)
Ctrl+D: 删除当前行 
Ctrl+Alt+↓ 复制当前行到下一行(复制增加)
Ctrl+Alt+↑ 复制当前行到上一行(复制增加)
Alt+↓ 当前行和下面一行交互位置(特别实用,可以省去先剪切,再粘贴了)
Al]]></description><category></category></item><item><title><![CDATA[Java对象的序列化与反序列化]]></title><link>https://blog.youkuaiyun.com/yaolingrui/article/details/7633743</link><guid>https://blog.youkuaiyun.com/yaolingrui/article/details/7633743</guid><author>yaolingrui</author><pubDate>Tue, 05 Jun 2012 11:29:06 +0800</pubDate><description><![CDATA[一、为什么要进行序列化
再介绍之前，我们有必要先了解下对象的生命周期，我们知道Java中的对象都是存在于堆内存中的，而堆内存是可以被垃圾回收器不定期回收的。从对象被创建到被回收这一段时间就是Java对象的生命周期，也即Java对象只存活于这个时间段内。
对象被垃圾回收器回收意味着对象和对象中的成员变量所占的内存也就被回收，这意味着我们就再也得不到该对象的任何内容了，因为已经被销毁了嘛，当然我们]]></description><category></category></item><item><title><![CDATA[Java集合中的排序问题]]></title><link>https://blog.youkuaiyun.com/yaolingrui/article/details/7570450</link><guid>https://blog.youkuaiyun.com/yaolingrui/article/details/7570450</guid><author>yaolingrui</author><pubDate>Tue, 15 May 2012 21:30:12 +0800</pubDate><description><![CDATA[有时我们需要对集合框架（包括Set、 List、 Map）中的元素进行排序，比如在Android开发中经常要用到ListView来显示一个列表，而这个列表中的数据很多时候都是使用一个ArrayList来存储的，因为ArrayList中的元素一般都是以存储顺序排序的（向List中添加元素，一般都是调用add方法将新元素添加在末尾，当然也可以调用另一个重载的add方法将元素添加到指定位置），很明显仅按]]></description><category></category></item><item><title><![CDATA[Java集合中的泛型与多态问题]]></title><link>https://blog.youkuaiyun.com/yaolingrui/article/details/7539796</link><guid>https://blog.youkuaiyun.com/yaolingrui/article/details/7539796</guid><author>yaolingrui</author><pubDate>Sun, 06 May 2012 16:40:38 +0800</pubDate><description><![CDATA[Java集合中泛型指的是在创建集合的时候要同时指定集合中存放的对象类型，这样做主要是基于类型安全方面的考虑。
比如假设我们要创建一个用于存放字符串的ArrayList，我们通常使用如下的方式：

ArrayList list = new ArrayList();
注意尖括号及其里面的内容，这样我们的这个list中就只能存放String类型的对象，当我们试图向这个list中添加非String]]></description><category></category></item><item><title><![CDATA[Java集合HashSet中的两个对象怎样算重复]]></title><link>https://blog.youkuaiyun.com/yaolingrui/article/details/7529371</link><guid>https://blog.youkuaiyun.com/yaolingrui/article/details/7529371</guid><author>yaolingrui</author><pubDate>Wed, 02 May 2012 20:55:01 +0800</pubDate><description><![CDATA[集合HashSet中对象的特点是无序、不允许重复。无序好理解，那么两个什么样的对象算重复呢？
两个对象重复意味着这两个对象的内容相同、hashcode值也相同。
（1）两个对象A和B内容相同，表示A.equals(B)的值为true。
（不重写的话，默认equals()方法是调用”=="进行判断的，”=="判断的是两个对象的引用是否相同）
（2）如果你不重写hashCode()方法的话，两]]></description><category></category></item><item><title><![CDATA[Java线程的5种状态及切换(透彻讲解)]]></title><link>https://blog.youkuaiyun.com/yaolingrui/article/details/7522372</link><guid>https://blog.youkuaiyun.com/yaolingrui/article/details/7522372</guid><author>yaolingrui</author><pubDate>Sun, 29 Apr 2012 15:12:57 +0800</pubDate><description><![CDATA[Java中的线程的生命周期大体可分为5种状态。
①NEW：这种情况指的是，通过New关键字创建了Thread类（或其子类）的对象
②RUNNABLE：这种情况指的是Thread类的对象调用了start()方法，这时的线程就等待时间片轮转到自己这，以便获得CPU；第二种情况是线程在处于RUNNABLE状态时并没有运行完自己的run方法，时间片用完之后回到RUNNABLE状态；还有种情况就是处于B]]></description><category></category></item><item><title><![CDATA[从设计的角度讨论Java中线程的两种创建方式]]></title><link>https://blog.youkuaiyun.com/yaolingrui/article/details/7522079</link><guid>https://blog.youkuaiyun.com/yaolingrui/article/details/7522079</guid><author>yaolingrui</author><pubDate>Sun, 29 Apr 2012 11:23:14 +0800</pubDate><description><![CDATA[Java中的多线程让我们的程序可以同时运行多个任务，即使我们的CPU是单核的。当然我们都明白这种情况下的同时运行，并不是真正的同时运行，而是JVM中的线程调度器根据时间片轮转的方式快速的在不同线程间的切换。线程调度器让JVM一会运行这个线程，一会运行那个线程，切换的速度很快便我们产生了这些线程好像同时运行的假象。
线程的创建方式有两种，这两种方式究竟有什么不同？性能有什么差异？为什么要设计两种方]]></description><category></category></item><item><title><![CDATA[Android的进程与线程（3）线程安全问题]]></title><link>https://blog.youkuaiyun.com/yaolingrui/article/details/7420074</link><guid>https://blog.youkuaiyun.com/yaolingrui/article/details/7420074</guid><author>yaolingrui</author><pubDate>Sun, 01 Apr 2012 17:37:21 +0800</pubDate><description><![CDATA[当一个程序启动的时候，系统会为程序创建一个名为main的线程。这个线程重要性在于它负责把事件分发给适合的用户组件，这些事件包括绘制事件。并且这个线程也是你的程序与Android UI工具包中的组件（比如android.widget和android.view包中的组件）进行交互的线程。正因为如此，这个main线程有时也被称为UI线程。
系统并不会为组件的每个实例都创建一个单独的线程。运行在同一个进]]></description><category></category></item><item><title><![CDATA[Android的进程与线程（2）按重要性划分等级的5种进程]]></title><link>https://blog.youkuaiyun.com/yaolingrui/article/details/7418564</link><guid>https://blog.youkuaiyun.com/yaolingrui/article/details/7418564</guid><author>yaolingrui</author><pubDate>Sun, 01 Apr 2012 11:23:43 +0800</pubDate><description><![CDATA[Android系统会尽可能时间长的来维持一个程序的进程，但当系统资源紧张的时候，系统终究会为一些新的或者更重要的进程杀死一些旧的进程来释放内存。系统主要是根据进程中组件的运行状态，来决定每一个进程的重要性，从而决定哪个进程需要杀死，哪个进程需要保持。最不重要的进程最容易先被杀死，其次最不重要的进程会被杀死，以此往复，直到系统恢复了需要的资源。
既然系统主要根据进程的重要性来决定一个进程的存亡，下]]></description><category></category></item><item><title><![CDATA[Android的进程与线程（1）]]></title><link>https://blog.youkuaiyun.com/yaolingrui/article/details/7417981</link><guid>https://blog.youkuaiyun.com/yaolingrui/article/details/7417981</guid><author>yaolingrui</author><pubDate>Sun, 01 Apr 2012 09:43:34 +0800</pubDate><description><![CDATA[当程序的一个组件启动的时候，如果这时程序中没有其他组件正在运行的话，Android系统将会为这个程序启动一个进程和一个线程。默认情况下，同一个程序中的所有组件运行在相同的进程和线程中（该线程被称为main线程）。如果当一个程序的组件启动的时候，该程序已经有一个进程的话（这种情况可能是因为程序的其他的某个组件已经运行了），程序的该组件就会在这个已经存在的进程中被启动，并且运行在同一个线程（即main]]></description><category></category></item><item><title><![CDATA[Android设备的电池续航时间优化（Optimizing Battery Life）——（一）监听电池电量和电池的充电状态]]></title><link>https://blog.youkuaiyun.com/yaolingrui/article/details/7407690</link><guid>https://blog.youkuaiyun.com/yaolingrui/article/details/7407690</guid><author>yaolingrui</author><pubDate>Thu, 29 Mar 2012 16:14:44 +0800</pubDate><description><![CDATA[当你想通过减少后台更新服务的更新频率来降低程序对电池的影响时，检查电池当前的电量和充电状态将是一个比较好的起点。
程序更新对电池造成的影响将取决于当前电池电量和充电状态，比如说，当设备正在充电的时候，这时的更新对电池的影响是微不足道的，所以这时就是你的程序加大更新力度的最佳时刻。与之相对的是，如果当前设备不是处于充电状态的话，降低程序更新力度对延长续航时间是很必要的。
与之相类似的，如果设备没]]></description><category></category></item><item><title><![CDATA[Android设备的电池续航时间优化（Optimizing Battery Life）]]></title><link>https://blog.youkuaiyun.com/yaolingrui/article/details/7407682</link><guid>https://blog.youkuaiyun.com/yaolingrui/article/details/7407682</guid><author>yaolingrui</author><pubDate>Thu, 29 Mar 2012 16:09:27 +0800</pubDate><description><![CDATA[“每当谈及移动智能设备的瓶颈，大家首先想到的总是电池续航能力。电池续航时间不仅与设备的硬件有关，还与运行在设备中的应用程序紧密相关。
在电池自身容量无法在短时间内获得大幅提升的情况下，通过优化应用程序以节省电量的做法，也能在一定程序上起到延长电池续航时间的作用。同时，也让移动应用开发者对应用的耗电状况有了全新认识，或许省电也能成为应用的一种竞争力。”

为了让你的应用程序更好的存在于用户的设]]></description><category></category></item><item><title><![CDATA[Android程序测试（2）——Activity测试]]></title><link>https://blog.youkuaiyun.com/yaolingrui/article/details/7382266</link><guid>https://blog.youkuaiyun.com/yaolingrui/article/details/7382266</guid><author>yaolingrui</author><pubDate>Thu, 22 Mar 2012 10:54:11 +0800</pubDate><description><![CDATA[与Content Provider测试、Service测试相比，Activity测试尤其离不开Android的测试框架（instrumentation framework），这是因为Android中的activities有着复杂的生命周期，而这些生命周期的各个阶段都是基于回调方法的，而这些方法只能由Android的测试框架来直接调用，也就是说，在一个程序中，向UI发送事件的唯一方法就是通过Andr]]></description><category></category></item><item><title><![CDATA[Android平台版本大全(注意版本号首字母原来是有规律的)]]></title><link>https://blog.youkuaiyun.com/yaolingrui/article/details/7375546</link><guid>https://blog.youkuaiyun.com/yaolingrui/article/details/7375546</guid><author>yaolingrui</author><pubDate>Tue, 20 Mar 2012 21:01:28 +0800</pubDate><description><![CDATA[留个记录，省的对应不上。


Android 4.0
代号：IceCreamSandwich
API Level：14




Android 2.3
代号：Gingerbread 
API Level：9，对于2.3.3和更高一点的版本API Level为10




Android 2.2
代号：FroYo
API Level：8


Android]]></description><category></category></item><item><title><![CDATA[Android命令行工具（2）——DDMS]]></title><link>https://blog.youkuaiyun.com/yaolingrui/article/details/7374802</link><guid>https://blog.youkuaiyun.com/yaolingrui/article/details/7374802</guid><author>yaolingrui</author><pubDate>Tue, 20 Mar 2012 17:40:46 +0800</pubDate><description><![CDATA[DDMS全称Dalvik Debug Monitor Service，功能很是强大，可以用来截取连接的设备或虚拟机屏幕，可以查看正在运行的进程的堆和线程信息，可以模拟电话拨打、短信发送，虚拟设置地理位置，还包括文件浏览器，内存分配跟踪等。本文继续结合官方文档，主要介绍一些关于DDMS的用法。（下图是通过Eclipse启动的DDMS）




启动DDMS
有两种启动方式：
一是在命令]]></description><category></category></item><item><title><![CDATA[64位ubuntu11.10使用git下载android源码]]></title><link>https://blog.youkuaiyun.com/yaolingrui/article/details/7369864</link><guid>https://blog.youkuaiyun.com/yaolingrui/article/details/7369864</guid><author>yaolingrui</author><pubDate>Mon, 19 Mar 2012 17:47:09 +0800</pubDate><description><![CDATA[Android是一个开发源码的平台，那就意味着，我们每一个人都可以下载、修改和创建自己的android platform，我们甚至可以帮助Android community完善和改进代码，当然这些离我们还有点远，反正离我还是比较远的，但看看总是可以的哈。本文将结合最新官方文档，使用git来下载android的源码，如有错误，欢迎指出！下面是具体步骤。
1.安装git和curl：

$ sud]]></description><category></category></item><item><title><![CDATA[Android设计模式系列(8)--SDK源码之工厂方法模式]]></title><link>https://blog.youkuaiyun.com/yaolingrui/article/details/7366988</link><guid>https://blog.youkuaiyun.com/yaolingrui/article/details/7366988</guid><author>yaolingrui</author><pubDate>Sun, 18 Mar 2012 20:46:18 +0800</pubDate><description><![CDATA[工厂方法模式，往往是设计模式初学者入门的模式，的确，有人称之为最为典型最具启发效果的模式。
android中用到了太多的工厂类，其中有用工厂方法模式的，当然也有很多工厂并不是使用工厂方法模式的，只是工具管理类。
今天以ThreadFactory举例说明一下简单工厂模式和工厂方法模式。 
工厂方法模式，Factory Method,简单的方式，不简单的应用。
1.意图
定义一个用于创建对象]]></description><category></category></item></channel></rss>