<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[yulongfei的专栏]]></title><description><![CDATA[不积跬步，无以至千里。]]></description><link>https://blog.csdn.net/gemmem</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; gemmem]]></copyright><item><title><![CDATA[Android自定义圆角ImageView]]></title><link>https://blog.csdn.net/gemmem/article/details/40376941</link><guid>https://blog.csdn.net/gemmem/article/details/40376941</guid><author>gemmem</author><pubDate>Wed, 22 Oct 2014 15:15:15 +0800</pubDate><description><![CDATA[我们经常看到一些app中可以显示圆角图片，比如qq的联系人图标等等，实现圆角图片一种办法是直接使用圆角图片资源，当然如果没有圆角图片资源，我们也可以自己通过程序实现的，下面介绍一个自定义圆角ImageView的方法：package com.yulongfei.imageview;

import android.content.Context;
import android.content.res]]></description><category></category></item><item><title><![CDATA[Android内存泄漏分析及调试]]></title><link>https://blog.csdn.net/gemmem/article/details/13017999</link><guid>https://blog.csdn.net/gemmem/article/details/13017999</guid><author>gemmem</author><pubDate>Fri, 25 Oct 2013 11:31:33 +0800</pubDate><description><![CDATA[首先了解一下dalvik的Garbage Collection：


 

 
如上图所示，GC会选择一些它了解还存活的对象作为内存遍历的根节点（GC Roots），比方说thread stack中的变量，JNI中的全局变量，zygote中的对象（class loader加载）等，然后开始对heap进行遍历。到最后，部分没有直接或者间接引用到GC Roots的就是需要回收的垃圾，会被G]]></description><category></category></item><item><title><![CDATA[android heapStartSize heapMaximumSize heapGrowthLimit heapSize说明]]></title><link>https://blog.csdn.net/gemmem/article/details/12008005</link><guid>https://blog.csdn.net/gemmem/article/details/12008005</guid><author>gemmem</author><pubDate>Wed, 25 Sep 2013 12:07:17 +0800</pubDate><description><![CDATA[dalvik/vm/Globals.java代码片段：


struct DvmGlobals {
    /*
     * Some options from the command line or environment.
     */
    char*       bootClassPathStr;
    char*       classPathStr;]]></description><category></category></item><item><title><![CDATA[android中如何使用ViewRootImpl这个类]]></title><link>https://blog.csdn.net/gemmem/article/details/9967295</link><guid>https://blog.csdn.net/gemmem/article/details/9967295</guid><author>gemmem</author><pubDate>Wed, 14 Aug 2013 18:10:05 +0800</pubDate><description><![CDATA[ViewRootImpl是一个和系统比较相关的类，一般程序开发可能不需要使用它，但是有时候为了实现一些高级功能，我们可以考虑使用ViewRootImpl这个类。
举一个例子：
在一般程序开发过程中，如果想得到当前View的touch事件的坐标x，y，我们一般会借助onTouch等回调函数，因为这些函数里面会带有系统传上来的MotionEvent参数，但是有些情况下，我们无法依赖这种onTouc]]></description><category></category></item><item><title><![CDATA[Android系统的性能调优参数介绍]]></title><link>https://blog.csdn.net/gemmem/article/details/9291103</link><guid>https://blog.csdn.net/gemmem/article/details/9291103</guid><author>gemmem</author><pubDate>Wed, 10 Jul 2013 15:08:13 +0800</pubDate><description><![CDATA[在Android系统中有一个类似Windows系统注册表的文件build.prop。这个文件内定义了系统初始(或永久)的一些参数属性、功能的开放等。通过调整/增加参数可以达到较调系统性能偏重点和附加功能开启的作用。
在Android 2.2、2.3、4.0中虽然每一版都有自己独有的参数，但绝大部分都是通用的，且可以起到关键性作用的。本文将以摩托手机Android 2.3系统为例，对Build.p]]></description><category></category></item><item><title><![CDATA[android Android.mk详细讲解]]></title><link>https://blog.csdn.net/gemmem/article/details/9289167</link><guid>https://blog.csdn.net/gemmem/article/details/9289167</guid><author>gemmem</author><pubDate>Wed, 10 Jul 2013 11:32:14 +0800</pubDate><description><![CDATA[(1)Android.mk文件首先需要指定LOCAL_PATH变量，用于查找源文件，即要编译的文件。由于一般情况下
Android.mk和需要编译的源文件在同一目录下，所以定义成如下形式：
LOCAL_PATH:=$(call my-dir)
上面的语句的意思是将LOCAL_PATH变量定义成本文件所在目录路径。

(2)Android.mk中可以定义多个编译模块，每个编译模块都是以in]]></description><category></category></item><item><title><![CDATA[Linux环境下Android JNI程序的编译]]></title><link>https://blog.csdn.net/gemmem/article/details/8993493</link><guid>https://blog.csdn.net/gemmem/article/details/8993493</guid><author>gemmem</author><pubDate>Thu, 30 May 2013 11:48:02 +0800</pubDate><description><![CDATA[尊重原创作者，转载请注明出处：
http://blog.csdn.net/gemmem/article/details/8993493
在android开发中，有时候需要编写一些C/C++代码，这时候就要用到JNI技术，我们需要将C/C++程序首先编译成so库，在java中通过native方法调用so库中的函数。有一种简单的方法就是首先单独编译so库文件，将它push到手机的system/li]]></description><category></category></item><item><title><![CDATA[Android OOM介绍及分析方法]]></title><link>https://blog.csdn.net/gemmem/article/details/8964397</link><guid>https://blog.csdn.net/gemmem/article/details/8964397</guid><author>gemmem</author><pubDate>Thu, 23 May 2013 11:23:32 +0800</pubDate><description><![CDATA[从早期G1的192MB RAM开始，到现在动辄1G -2G RAM的设备，为单个App分配的内存从16MB到48MB甚至更多，但OOM从不曾离我们远去。这是因为大部分App中图片内容占据了50%甚至75%以上，而App内容的极大丰富，所需的图片越来越多，屏幕尺寸也越来越大分辨率也越来越高，所需的图片的大小也跟着往上涨，这在大屏手机和平板上尤其明显。而且还经常要兼容低版本的设备。所以Android的]]></description><category></category></item><item><title><![CDATA[Android AsyncTask源码分析]]></title><link>https://blog.csdn.net/gemmem/article/details/8957111</link><guid>https://blog.csdn.net/gemmem/article/details/8957111</guid><author>gemmem</author><pubDate>Tue, 21 May 2013 20:18:40 +0800</pubDate><description><![CDATA[尊重原创作者，转载请注明出处：

http://blog.csdn.net/gemmem/article/details/8957111

AsyncTask是一个抽象类，我们需要继承这个类，并实现抽象方法，在这个类的实现过程中需要定义3个类和执行4个方法。3个类分别是：

1.Params：执行异步任务需要的参数

2.Progress：异步任务后台执行中需要刷新的参数

3]]></description><category></category></item><item><title><![CDATA[Java FutureTask理解]]></title><link>https://blog.csdn.net/gemmem/article/details/8956703</link><guid>https://blog.csdn.net/gemmem/article/details/8956703</guid><author>gemmem</author><pubDate>Tue, 21 May 2013 18:10:59 +0800</pubDate><description><![CDATA[尊敬原创作者，转载请注明出处：
http://blog.csdn.net/gemmem/article/details/8956703

FutureTask是为了弥补Thread的不足而设计的，它可以让程序员准确地知道线程什么时候执行完成并获得到线程执行完成后返回的结果（如果有需要）。

java.util.concurrent 
类 FutureTask
java.lang.Ob]]></description><category></category></item><item><title><![CDATA[Android进程的内存管理分析]]></title><link>https://blog.csdn.net/gemmem/article/details/8920039</link><guid>https://blog.csdn.net/gemmem/article/details/8920039</guid><author>gemmem</author><pubDate>Mon, 13 May 2013 16:06:32 +0800</pubDate><description><![CDATA[尊重原创作者，转载请注明出处：
http://blog.csdn.net/gemmem/article/details/8920039
最近在网上看了不少Android内存管理方面的博文，但是文章大多都是就单个方面去介绍内存管理，没有能全局把握，缺乏系统性阐述，而且有些观点有误。
这样对Android内存管理进行局部性介绍，很难使读者建立系统性概念，无法真正理解内存管理，对提高系统优化和系统]]></description><category></category></item><item><title><![CDATA[android安全：flag FLAG_RECEIVER_REGISTERED_ONLY的意义]]></title><link>https://blog.csdn.net/gemmem/article/details/8859493</link><guid>https://blog.csdn.net/gemmem/article/details/8859493</guid><author>gemmem</author><pubDate>Sat, 27 Apr 2013 16:23:06 +0800</pubDate><description><![CDATA[尊重原创作者，转载请注明出处：
http://blog.csdn.net/gemmem/article/details/8859493


       做过时钟widget的朋友应该对ACTION_TIME_TICK都很熟悉，大家都用这个广播来更新UI界面上的时间，但是新版本的android中，却对TIME_TICK广播做了限制，系统不再允许在AndroidManifest.xml里面静]]></description><category></category></item><item><title><![CDATA[android安全：Android对开机自启动的限制]]></title><link>https://blog.csdn.net/gemmem/article/details/8859131</link><guid>https://blog.csdn.net/gemmem/article/details/8859131</guid><author>gemmem</author><pubDate>Sat, 27 Apr 2013 15:28:22 +0800</pubDate><description><![CDATA[尊重原创作者，转载请注明出处：
http://blog.csdn.net/gemmem/article/details/8859131



谈到如何实现程序的开机自启动，我想大多数朋友都会认为小菜一碟，不就是注册一个BOOT_COMPLETED消息嘛！
在AndroidManifest.xml里面加入一个receiver，就像这样：]]></description><category></category></item><item><title><![CDATA[android安全：forceStopPackage对Alarm的影响]]></title><link>https://blog.csdn.net/gemmem/article/details/8858461</link><guid>https://blog.csdn.net/gemmem/article/details/8858461</guid><author>gemmem</author><pubDate>Sat, 27 Apr 2013 14:43:59 +0800</pubDate><description><![CDATA[尊重原创作者，转载请注明出处：
http://blog.csdn.net/gemmem/article/details/8858461



也许一些使用alarmmanager做定时任务的同学遇到过这样的问题：设定alarm后，进入设置-->应用程序管理-->强行停止app后，定时任务就失效了。


简单的讲就是：force stop会导致alarm失效。


最典型的例子]]></description><category></category></item><item><title><![CDATA[Android.mk如何引入第三方jar包]]></title><link>https://blog.csdn.net/gemmem/article/details/8810480</link><guid>https://blog.csdn.net/gemmem/article/details/8810480</guid><author>gemmem</author><pubDate>Tue, 16 Apr 2013 19:05:57 +0800</pubDate><description><![CDATA[尊重原创作者，转载请注明出处：
http://blog.csdn.net/gemmem/article/details/8810480



    使用eclipse的同学对于import jar应该是毫无压力的，但是很多同学（比如我）习惯使用linux来编译android apk，那么如何在linux环境下编译带有第三方jar包的app呢？


关键在于如何修改Android.]]></description><category></category></item><item><title><![CDATA[Android Android.mk文件各种模版参考]]></title><link>https://blog.csdn.net/gemmem/article/details/8810392</link><guid>https://blog.csdn.net/gemmem/article/details/8810392</guid><author>gemmem</author><pubDate>Tue, 16 Apr 2013 18:32:21 +0800</pubDate><description><![CDATA[一、编译一个简单的APK 

  LOCAL_PATH := $(call my-dir)

  include $(CLEAR_VARS)

  # Build all java files in the java subdirectory

  LOCAL_SRC_FILES := $(call all-subdir-java-files)

  # Name of the]]></description><category></category></item><item><title><![CDATA[终止Android中HandlerThread的方法]]></title><link>https://blog.csdn.net/gemmem/article/details/7932655</link><guid>https://blog.csdn.net/gemmem/article/details/7932655</guid><author>gemmem</author><pubDate>Sat, 01 Sep 2012 17:21:57 +0800</pubDate><description><![CDATA[尊重原创作者，转载请注明出处：
http://blog.csdn.net/gemmem/article/details/7932655
如果我们在 activity中start了一个HandlerThread，那么这个线程会启动一个looper消息循环，当activity退出了，这个HandlerThread线程并没有终止，还是在那里做looper死循环，这当然不是我们愿意看到的。

我们]]></description><category></category></item><item><title><![CDATA[Android task和affinity讲解]]></title><link>https://blog.csdn.net/gemmem/article/details/7930903</link><guid>https://blog.csdn.net/gemmem/article/details/7930903</guid><author>gemmem</author><pubDate>Fri, 31 Aug 2012 21:47:42 +0800</pubDate><description><![CDATA[源文链接：http://appmem.com/archives/405

本文参考了官方Dev Guide文档，简单介绍Android下的affinities和任务（task）。

1、Activity和Task

task就好像是能包含很多activity的栈。 默认情况下，一个activity启动另外一个activity时，两个activity是放在同一个task栈中的，第二个ac]]></description><category></category></item><item><title><![CDATA[android ddms查看线程]]></title><link>https://blog.csdn.net/gemmem/article/details/7835437</link><guid>https://blog.csdn.net/gemmem/article/details/7835437</guid><author>gemmem</author><pubDate>Mon, 06 Aug 2012 15:04:05 +0800</pubDate><description><![CDATA[本文转自： http://www.mobiletrain.org/lecture/doc/android/2011-05/457.html

大家都用过ddm，如果你用ddms查看一个程序的所有线程，你会发现
Signal Catcher
Heap Worker
main thread
binder thread #1
binder thread #2
那这些线程都是用来做什么的呢]]></description><category></category></item><item><title><![CDATA[Android的View和ViewGroup分析]]></title><link>https://blog.csdn.net/gemmem/article/details/7783525</link><guid>https://blog.csdn.net/gemmem/article/details/7783525</guid><author>gemmem</author><pubDate>Wed, 25 Jul 2012 10:22:34 +0800</pubDate><description><![CDATA[尊重原创作者，转载请注明出处：
http://blog.csdn.net/gemmem/article/details/7783525





1. 概念
Android中的View与我们以前理解的“视图”不同。在Android中，View比视图具有更广的含义，它包含了用户交互和显示，更像Windows操作系统中的window。
ViewGroup是View的子类，所以它也具有]]></description><category></category></item></channel></rss>