博客园 - xirihanlin
uuid:7d267088-5232-4821-9010-8cd5fdd6cd4f;id=1076890
2012-02-08T09:06:53Z
xirihanlin
https://www.cnblogs.com/xirihanlin/
feed.cnblogs.com
https://www.cnblogs.com/xirihanlin/archive/2011/12/30/2307139.html
如何使用SQLite - xirihanlin
前些时候看到兴趣小组里有人问“Android上SQLite的最佳实践”是什么,好奇地搜了一下,确实没有一个好一点的指导文档,平时的使用也只是简单的拷贝code,并没有深入的研究过。以下是我看到的Kevin关于其使用的心得,原文的大体的意思是: Android例子涵盖了一些Sqlite的基本用法,但它们并没有深入地给出合理的使用方法,更重要的是,不合理的使用方法。大多数例子和文档只是涉及最基本的数据库查询,或者教你如何创建一个ContentProvider。从来不提及的地方像: · 什么地方创建和保存SQLiteOpenHelper实例? · 可以有多少个实例? ...
2011-12-30T03:03:00Z
2011-12-30T03:03:00Z
xirihanlin
https://www.cnblogs.com/xirihanlin/
【摘要】前些时候看到兴趣小组里有人问“Android上SQLite的最佳实践”是什么,好奇地搜了一下,确实没有一个好一点的指导文档,平时的使用也只是简单的拷贝code,并没有深入的研究过。以下是我看到的Kevin关于其使用的心得,原文的大体的意思是: Android例子涵盖了一些Sqlite的基本用法,但它们并没有深入地给出合理的使用方法,更重要的是,不合理的使用方法。大多数例子和文档只是涉及最基本的数据库查询,或者教你如何创建一个ContentProvider。从来不提及的地方像: · 什么地方创建和保存SQLiteOpenHelper实例? · 可以有多少个实例? ... <a href="https://www.cnblogs.com/xirihanlin/archive/2011/12/30/2307139.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/xirihanlin/archive/2011/12/06/2277807.html
Android上实现Push - xirihanlin
这些天一直在琢磨如何在android device上实现一套Push功能,也google很多资料,看似无外乎以下三个方案(以下转载): 1)轮询:应用程序应当阶段性的与服务器进行连接并查询是否有新的消息到达,你必须自己实现与服务器之间的通信,例如消息排队等。而且你还要考虑轮询的频率,如果太慢可能导致某些消息的延迟,如果太快,则会大量消耗网络带宽和电池。 2)SMS:在Android平台上,你可以通过拦截SMS消息并且解析消息内容来了解服务器的意图。这是一个不错的想法,我就见过采用这个方案的应用程序。这个方案的好处是,可以实现完全的实时操作。但是问题是这个方案的成本相对比较高,你很难找到免费的短
2011-12-06T04:15:00Z
2011-12-06T04:15:00Z
xirihanlin
https://www.cnblogs.com/xirihanlin/
【摘要】这些天一直在琢磨如何在android device上实现一套Push功能,也google很多资料,看似无外乎以下三个方案(以下转载): 1)轮询:应用程序应当阶段性的与服务器进行连接并查询是否有新的消息到达,你必须自己实现与服务器之间的通信,例如消息排队等。而且你还要考虑轮询的频率,如果太慢可能导致某些消息的延迟,如果太快,则会大量消耗网络带宽和电池。 2)SMS:在Android平台上,你可以通过拦截SMS消息并且解析消息内容来了解服务器的意图。这是一个不错的想法,我就见过采用这个方案的应用程序。这个方案的好处是,可以实现完全的实时操作。但是问题是这个方案的成本相对比较高,你很难找到免费的短 <a href="https://www.cnblogs.com/xirihanlin/archive/2011/12/06/2277807.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/xirihanlin/archive/2011/12/05/2276772.html
HTTP请求如何带参 - xirihanlin
这两天正好作一份API的接口文档,关于HTTP request如何传递参数不是很清楚,这里转载了他人的文档,让我明白了很多。。http://tomfish88.iteye.com/category/138221?show_full=true----------------HttpClient程序包是一个实现了 HTTP 协议的客户端编程工具包,要想熟练的掌握它,必须熟悉 HTTP协议。一个最简单的调用如下:import java.io.IOException;import org.apache.http.HttpResponse;import org.apache.http.client.Cl
2011-12-05T06:07:00Z
2011-12-05T06:07:00Z
xirihanlin
https://www.cnblogs.com/xirihanlin/
【摘要】这两天正好作一份API的接口文档,关于HTTP request如何传递参数不是很清楚,这里转载了他人的文档,让我明白了很多。。http://tomfish88.iteye.com/category/138221?show_full=true----------------HttpClient程序包是一个实现了 HTTP 协议的客户端编程工具包,要想熟练的掌握它,必须熟悉 HTTP协议。一个最简单的调用如下:import java.io.IOException;import org.apache.http.HttpResponse;import org.apache.http.client.Cl <a href="https://www.cnblogs.com/xirihanlin/archive/2011/12/05/2276772.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/xirihanlin/archive/2011/06/10/2077965.html
ispace - xirihanlin
Overview ispace is a graph-based tool for visualizing, analyzing, and experimentally reorganizing Java dependency graphs. The tool provides a set of simple but flexible means for tailoring the visuali...
2011-06-10T13:38:00Z
2011-06-10T13:38:00Z
xirihanlin
https://www.cnblogs.com/xirihanlin/
【摘要】Overview ispace is a graph-based tool for visualizing, analyzing, and experimentally reorganizing Java dependency graphs. The tool provides a set of simple but flexible means for tailoring the visuali... <a href="https://www.cnblogs.com/xirihanlin/archive/2011/06/10/2077965.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/xirihanlin/archive/2011/06/10/2077951.html
ProGuard - xirihanlin
ProGuard工具通过移除不用的代码,用语义上混淆的名字来重命名类、字段和方法等手段来压缩、优化和混淆你的代码。结果是更小的.apk文件,并且更难于被反编译。由于ProGuard能够让你的程序难于被反编译,因此,当你的程序使用了一些机密的信息的时,使用它就显得更加重要。
2011-06-10T13:19:00Z
2011-06-10T13:19:00Z
xirihanlin
https://www.cnblogs.com/xirihanlin/
【摘要】ProGuard工具通过移除不用的代码,用语义上混淆的名字来重命名类、字段和方法等手段来压缩、优化和混淆你的代码。结果是更小的.apk文件,并且更难于被反编译。由于ProGuard能够让你的程序难于被反编译,因此,当你的程序使用了一些机密的信息的时,使用它就显得更加重要。 <a href="https://www.cnblogs.com/xirihanlin/archive/2011/06/10/2077951.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/xirihanlin/archive/2011/06/07/2074615.html
使用internal(com.android.internal)和hidden(@hide)APIs – Part 5 - xirihanlin
在本文中,我将向你们展示如何使用那些Internal和Hidden API。
此外,在本文的结尾,我列出了一些自定义的Android平台,它们都包含Internal和Hidden API。我附带了它们,是为了可能你不想花太多时间在这方面,但又想快速的尝试什么。
2011-06-07T12:56:00Z
2011-06-07T12:56:00Z
xirihanlin
https://www.cnblogs.com/xirihanlin/
【摘要】在本文中,我将向你们展示如何使用那些Internal和Hidden API。
此外,在本文的结尾,我列出了一些自定义的Android平台,它们都包含Internal和Hidden API。我附带了它们,是为了可能你不想花太多时间在这方面,但又想快速的尝试什么。 <a href="https://www.cnblogs.com/xirihanlin/archive/2011/06/07/2074615.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/xirihanlin/archive/2011/06/07/2074614.html
使用internal(com.android.internal)和hidden(@hide)APIs – Part 4 - xirihanlin
在上一篇文章里,我描述了如何创建一个自定义的original-android.jar,以及如何创建一个自定义的Android平台来使用这个original-android.jar。这对Hidden API来说足够了。但对Internal API来说,仍然还有一个包袱:Eclipse的ADT插件。它限制使用com.android.internal包中的任何类。
2011-06-07T12:54:00Z
2011-06-07T12:54:00Z
xirihanlin
https://www.cnblogs.com/xirihanlin/
【摘要】在上一篇文章里,我描述了如何创建一个自定义的original-android.jar,以及如何创建一个自定义的Android平台来使用这个original-android.jar。这对Hidden API来说足够了。但对Internal API来说,仍然还有一个包袱:Eclipse的ADT插件。它限制使用com.android.internal包中的任何类。 <a href="https://www.cnblogs.com/xirihanlin/archive/2011/06/07/2074614.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/xirihanlin/archive/2011/06/05/2073120.html
使用internal(com.android.internal)和hidden(@hide)APIs – Part 3 - xirihanlin
在上一篇中,我已经展示了如何创建一个包含所有internal和hidden API的original-android.jar。
接下来的工作就是要修改已经存在的Android平台(SDK_DIR/platforms/platform-X/android.jar,X表示API等级)。你可以直接使用Part2中创建的original-android.jar替换android.jar。但这样的话,你的所有工程都将直接使用internal和hidden API而没有任何限制。这不够方便,因为在多数的工程中你不希望这样。甚至,你可能更希望禁止这些API(ADT/android.jar的默认行为)。但对于一些特定的工程,你希望能够使用这些internal和hidden API。
为了达到这样的灵活性,你需要创建一个新的自定义的Android平台。当不需要访问internal和hidden API时,你只需使用原有的Android平台。当你使用这些API时,你使用自定义的Android平台。
2011-06-05T05:51:00Z
2011-06-05T05:51:00Z
xirihanlin
https://www.cnblogs.com/xirihanlin/
【摘要】在上一篇中,我已经展示了如何创建一个包含所有internal和hidden API的original-android.jar。
接下来的工作就是要修改已经存在的Android平台(SDK_DIR/platforms/platform-X/android.jar,X表示API等级)。你可以直接使用Part2中创建的original-android.jar替换android.jar。但这样的话,你的所有工程都将直接使用internal和hidden API而没有任何限制。这不够方便,因为在多数的工程中你不希望这样。甚至,你可能更希望禁止这些API(ADT/android.jar的默认行为)。但对于一些特定的工程,你希望能够使用这些internal和hidden API。
为了达到这样的灵活性,你需要创建一个新的自定义的Android平台。当不需要访问internal和hidden API时,你只需使用原有的Android平台。当你使用这些API时,你使用自定义的Android平台。 <a href="https://www.cnblogs.com/xirihanlin/archive/2011/06/05/2073120.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/xirihanlin/archive/2011/06/05/2073119.html
使用internal(com.android.internal)和hidden(@hide)APIs – Part 2 - xirihanlin
在上一篇中,我解释了为什么我们不通过反射就会很难使用internal和hidden API。这是因为android.jar中就没包含这些API,因此,没人能够在编译时引用这些类。
这篇文章将描述如何还原最初的android.jar。这将允许我们像使用公开的API那样使用internal和hidden API。
2011-06-05T05:48:00Z
2011-06-05T05:48:00Z
xirihanlin
https://www.cnblogs.com/xirihanlin/
【摘要】在上一篇中,我解释了为什么我们不通过反射就会很难使用internal和hidden API。这是因为android.jar中就没包含这些API,因此,没人能够在编译时引用这些类。
这篇文章将描述如何还原最初的android.jar。这将允许我们像使用公开的API那样使用internal和hidden API。 <a href="https://www.cnblogs.com/xirihanlin/archive/2011/06/05/2073119.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/xirihanlin/archive/2011/06/05/2073118.html
使用internal(com.android.internal)和hidden(@hide)APIs – Part 1 - xirihanlin
Android有两种类型的API是不能经由SDK访问的。
第一种是位于com.android.internal包中的API。我将称之为internal API。第二种API类型是一系列被标记为@hide属性的类和方法。从严格意义上来讲,这不是一个单一的API,而是一组小的被隐藏的API,但我仍将其假设为一种API,并称之为hidden API。
2011-06-05T05:45:00Z
2011-06-05T05:45:00Z
xirihanlin
https://www.cnblogs.com/xirihanlin/
【摘要】Android有两种类型的API是不能经由SDK访问的。
第一种是位于com.android.internal包中的API。我将称之为internal API。第二种API类型是一系列被标记为@hide属性的类和方法。从严格意义上来讲,这不是一个单一的API,而是一组小的被隐藏的API,但我仍将其假设为一种API,并称之为hidden API。 <a href="https://www.cnblogs.com/xirihanlin/archive/2011/06/05/2073118.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/xirihanlin/archive/2011/05/02/2034557.html
人是一根能思想的苇草 - xirihanlin
人只不过是一根苇草,是自然界最脆弱的东西;但他是一根能思想的苇草。用不着整个宇宙都拿起武器来才能毁灭他;一口气、一滴水就足以致他死命了。然而,纵使宇宙毁灭了他,人却仍然要比致他于死命的东西更高贵得多;因为他知道自己要死亡,以及宇宙对他所具有的优势,而宇宙对此却是一无所知。因而,我们全部的尊严就在于思想……
2011-05-02T12:46:00Z
2011-05-02T12:46:00Z
xirihanlin
https://www.cnblogs.com/xirihanlin/
【摘要】人只不过是一根苇草,是自然界最脆弱的东西;但他是一根能思想的苇草。用不着整个宇宙都拿起武器来才能毁灭他;一口气、一滴水就足以致他死命了。然而,纵使宇宙毁灭了他,人却仍然要比致他于死命的东西更高贵得多;因为他知道自己要死亡,以及宇宙对他所具有的优势,而宇宙对此却是一无所知。因而,我们全部的尊严就在于思想…… <a href="https://www.cnblogs.com/xirihanlin/archive/2011/05/02/2034557.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/xirihanlin/archive/2011/04/12/2013593.html
在Outlook中如何实现自动CC - xirihanlin
用Outlook发邮件,自动在cc列表里加入自己的邮件
2011-04-12T06:01:00Z
2011-04-12T06:01:00Z
xirihanlin
https://www.cnblogs.com/xirihanlin/
【摘要】用Outlook发邮件,自动在cc列表里加入自己的邮件 <a href="https://www.cnblogs.com/xirihanlin/archive/2011/04/12/2013593.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/xirihanlin/archive/2011/04/11/2012746.html
Android中的Handler, Looper, MessageQueue和Thread - xirihanlin
前几天,和同事探讨了一下Android中的消息机制,探究了消息的发送和接收过程以及与线程之间的关系。虽然我们经常使用这些基础的东西,但对于其内部原理的了解,能使我们更加容易、合理地架构系统,并避免一些低级错误。
对于这部分的内容,将分成4小节来描述:
1.职责与关系
2.消息循环
3.线程与更新
4.几点小结
2011-04-11T09:52:00Z
2011-04-11T09:52:00Z
xirihanlin
https://www.cnblogs.com/xirihanlin/
【摘要】前几天,和同事探讨了一下Android中的消息机制,探究了消息的发送和接收过程以及与线程之间的关系。虽然我们经常使用这些基础的东西,但对于其内部原理的了解,能使我们更加容易、合理地架构系统,并避免一些低级错误。
对于这部分的内容,将分成4小节来描述:
1.职责与关系
2.消息循环
3.线程与更新
4.几点小结 <a href="https://www.cnblogs.com/xirihanlin/archive/2011/04/11/2012746.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/xirihanlin/archive/2011/04/11/2012734.html
ListView性能[译] - xirihanlin
原文路径:http://blog.jteam.nl/2009/09/17/exploring-the-world-of-android-part-2/ ListView是一种可以显示一系列项目并能进行滚动显示的View。在每行里,既可以是简单的文本,也可以是复杂的结构。一般情况下,你都需要保证ListView运行得很好(即:渲染更快,滚动流畅)。在接下来的内容里,我将就ListView的使用,向大家提供几种解决不同性能问题的解决方案。 如果你想使用ListView,你就不得不使用ListAdapter来显示内容。SDK中,已经有了几种简单实现的Adapter: · ArrayAdap
2011-04-11T09:40:00Z
2011-04-11T09:40:00Z
xirihanlin
https://www.cnblogs.com/xirihanlin/
【摘要】原文路径:http://blog.jteam.nl/2009/09/17/exploring-the-world-of-android-part-2/ ListView是一种可以显示一系列项目并能进行滚动显示的View。在每行里,既可以是简单的文本,也可以是复杂的结构。一般情况下,你都需要保证ListView运行得很好(即:渲染更快,滚动流畅)。在接下来的内容里,我将就ListView的使用,向大家提供几种解决不同性能问题的解决方案。 如果你想使用ListView,你就不得不使用ListAdapter来显示内容。SDK中,已经有了几种简单实现的Adapter: · ArrayAdap <a href="https://www.cnblogs.com/xirihanlin/archive/2011/04/11/2012734.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/xirihanlin/archive/2011/03/08/1977170.html
Eclipse JAD反编译插件安装方法[zz] - xirihanlin
安装环境:eclipse3.4+jad.exe+jadclipse_3.3.0.jar1.下载jad.exe和jadclipse_3.3.0.jar2.将jad.exe拷贝到%JAVA_HOME%bin目录下,将jadclipse_3.3.0.jar拷贝到eclipse的plugins目录下3.启动或重起eclipse,修改window -> Preferences -> Java -> JadClipse-> Path to decompiler 设置为:jad(默认为jad,如果不行,则此处设置为绝对路径如:D://jad//jad.exe)4.Windows -&
2011-03-08T05:43:00Z
2011-03-08T05:43:00Z
xirihanlin
https://www.cnblogs.com/xirihanlin/
【摘要】安装环境:eclipse3.4+jad.exe+jadclipse_3.3.0.jar1.下载jad.exe和jadclipse_3.3.0.jar2.将jad.exe拷贝到%JAVA_HOME%bin目录下,将jadclipse_3.3.0.jar拷贝到eclipse的plugins目录下3.启动或重起eclipse,修改window -> Preferences -> Java -> JadClipse-> Path to decompiler 设置为:jad(默认为jad,如果不行,则此处设置为绝对路径如:D://jad//jad.exe)4.Windows -& <a href="https://www.cnblogs.com/xirihanlin/archive/2011/03/08/1977170.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/xirihanlin/archive/2010/12/29/1920356.html
浅析GestureDetector - xirihanlin
分析GestureDetector的TouchEvent解析过程,重构自己的Detector。
2010-12-29T02:51:00Z
2010-12-29T02:51:00Z
xirihanlin
https://www.cnblogs.com/xirihanlin/
【摘要】分析GestureDetector的TouchEvent解析过程,重构自己的Detector。 <a href="https://www.cnblogs.com/xirihanlin/archive/2010/12/29/1920356.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/xirihanlin/archive/2010/06/25/1765261.html
Menu资源 - xirihanlin
Menu资源定义了应用程序的菜单(选项菜单,上下文菜单或子菜单),可以通过MenuInflater创建。File Location: res/menu/filename.xml 文件名将作为资源ID使用。Compiled Resource Datatype: 指向Menu(或子类)资源的指针。Resouce Reference: R.menu.filename(Java) @[package:]m...
2010-06-25T07:56:00Z
2010-06-25T07:56:00Z
xirihanlin
https://www.cnblogs.com/xirihanlin/
【摘要】Menu资源定义了应用程序的菜单(选项菜单,上下文菜单或子菜单),可以通过MenuInflater创建。File Location: res/menu/filename.xml 文件名将作为资源ID使用。Compiled Resource Datatype: 指向Menu(或子类)资源的指针。Resouce Reference: R.menu.filename(Java) @[package:]m... <a href="https://www.cnblogs.com/xirihanlin/archive/2010/06/25/1765261.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/xirihanlin/archive/2010/06/15/1758677.html
Testing和Instrumentation - xirihanlin
Android提供了一系列强大的测试工具,它针对Android的环境,扩展了业内标准的JUnit测试框架。尽管你可以使用JUnit测试Android工程,但Android工具允许你为应用程序的各个方面进行更为复杂的测试,包括单元层面及框架层面。Android测试环境的主要特征有:l 可以访问Android系统对象。l Instrumentation框架可以控制和测试应用程序。l Android系统...
2010-06-15T09:06:00Z
2010-06-15T09:06:00Z
xirihanlin
https://www.cnblogs.com/xirihanlin/
【摘要】Android提供了一系列强大的测试工具,它针对Android的环境,扩展了业内标准的JUnit测试框架。尽管你可以使用JUnit测试Android工程,但Android工具允许你为应用程序的各个方面进行更为复杂的测试,包括单元层面及框架层面。Android测试环境的主要特征有:l 可以访问Android系统对象。l Instrumentation框架可以控制和测试应用程序。l Android系统... <a href="https://www.cnblogs.com/xirihanlin/archive/2010/06/15/1758677.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/xirihanlin/archive/2010/06/14/1758145.html
Drawable资源 - xirihanlin
Drawable资源是对图像的一个抽象,你可以通过getDrawable(int)得到并绘制到屏幕上。这里有几种不同类型的Drawable:Bitmap File 一个Bitmap图像文件(.png、.jpg或.gif)。BitmapDrawable。Nine-Patch File 一个带有伸缩区域的PNG文件,可以基于content伸缩图片(.9.png)。NinePatchDrawable。S...
2010-06-14T02:32:00Z
2010-06-14T02:32:00Z
xirihanlin
https://www.cnblogs.com/xirihanlin/
【摘要】Drawable资源是对图像的一个抽象,你可以通过getDrawable(int)得到并绘制到屏幕上。这里有几种不同类型的Drawable:Bitmap File 一个Bitmap图像文件(.png、.jpg或.gif)。BitmapDrawable。Nine-Patch File 一个带有伸缩区域的PNG文件,可以基于content伸缩图片(.9.png)。NinePatchDrawable。S... <a href="https://www.cnblogs.com/xirihanlin/archive/2010/06/14/1758145.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/xirihanlin/archive/2010/06/11/1756121.html
ColorStateList资源 - xirihanlin
ColorStateList对象可以在XML中定义,像color一样使用,它能根据它应用到的View对象的状态实时改变颜色。例如,Button可以存在多种状态(pressed、focused或other),如果使用ColorStateList,你就能为它的每个状态提供不同的颜色。你可以在XML文件中描述状态列表。每种颜色定义在一个<item>元素里,<item>放在单个&l...
2010-06-11T02:12:00Z
2010-06-11T02:12:00Z
xirihanlin
https://www.cnblogs.com/xirihanlin/
【摘要】ColorStateList对象可以在XML中定义,像color一样使用,它能根据它应用到的View对象的状态实时改变颜色。例如,Button可以存在多种状态(pressed、focused或other),如果使用ColorStateList,你就能为它的每个状态提供不同的颜色。你可以在XML文件中描述状态列表。每种颜色定义在一个<item>元素里,<item>放在单个&l... <a href="https://www.cnblogs.com/xirihanlin/archive/2010/06/11/1756121.html" target="_blank">阅读全文</a>