<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>CNlaoKe&#039;s Blog &#187; Android</title>
	<atom:link href="http://blog.cnlaoKe.com/category/android/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.cnlaoKe.com</link>
	<description>Rome was not built in a day!</description>
	<lastBuildDate>Wed, 25 Aug 2010 09:45:12 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>[转]编写高效的Android代码</title>
		<link>http://blog.cnlaoKe.com/2009/08/03/59/</link>
		<comments>http://blog.cnlaoKe.com/2009/08/03/59/#comments</comments>
		<pubDate>Mon, 03 Aug 2009 09:29:48 +0000</pubDate>
		<dc:creator>CNlaoKe</dc:creator>
				<category><![CDATA[Android]]></category>

		<guid isPermaLink="false">http://blog.cnlaoKe.com/2009/08/03/59/</guid>
		<description><![CDATA[编写高效的Android代码  
// 300) {
										text = text + "\r\n\n本文来自CSDN博客，转载请标明出处：" + location.href;
										clipboardData.setData("text", text); 
									}
								}, 100);
							}
						}
// ]]&#62; // 
虽然如此说，但似乎并没有什么好的办法：Android设备是嵌入式设备。现代的手持设备，与其说是电话，更像一台拿在手中的电脑。但是，即使是“最快”的手持设备，其性能也赶不上一台普通的台式电脑。 
这就是为什么我们在书写Android应用程序的时候要格外关注效率。这些设备并没有那么快，并且受电池电量的制约。这意味着，设备没有更多的能力，我们必须把程序写的尽量有效。 
本章讨论了很多能让开发者使他们的程序运行更有效的方法，遵照这些方法，你可以使你的程序发挥最大的效力。 

简介
对于占用资源的系统，有两条基本原则： 

不要做不必要的事 
不要分配不必要的内存

所有下面的内容都遵照这两个原则。 
有些人可能马上会跳出来，把本节的大部分内容归于“草率的优化”（xing:参见[The Root of All Evil]）， 不可否认微优化（micro-optimization。xing:代码优化，相对于结构优化）的确会带来很多问题，诸如无法使用更有效的数据结构和算 法。但是在手持设备上，你别无选择。假如你认为Android虚拟机的性能与台式机相当，你的程序很有可能一开始就占用了系统的全部内存（xing:内存 很小），这会让你的程序慢得像蜗牛一样，更遑论做其他的操作了。 
Android的成功依赖于你的程序提供的用户体验。而这种用户体验，部分依赖于你的程序是响应快速而灵活的，还是响应缓慢而僵化的。因 为所有的程序都运行在同一个设备之上，都在一起，这就如果在同一条路上行驶的汽车。而这篇文档就相当于你在取得驾照之前必须要学习的交通规则。如果大家都 按照这些规则去做，驾驶就会很顺畅，但是如果你不这样做，你可能会车毁人亡。这就是为什么这些原则十分重要。 
当我们开门见山、直击主题之前，还必须要提醒大家一点：不管VM是否支持实时（JIT）编译器（xing:它允许实时地将Java解释型 程序自动编译成本机机器语言，以使程序执行的速度更快。有些JVM包含JIT编译器。），下面提到的这些原则都是成立的。假如我们有目标完全相同的两个方 法，在解释执行时foo()比bar()快，那么编译之后，foo()依然会比bar()快。所以不要寄希望于编译器可以拯救你的程序。

避免建立对象 
世界上没有免费的对象。虽然GC为每个线程都建立了临时对象池，可以使创建对象的代价变得小一些，但是分配内存永远都比不分配内存的代价大。 
如果你在用户界面循环中分配对象内存，就会引发周期性的垃圾回收，用户就会觉得界面像打嗝一样一顿一顿的。 
所以，除非必要，应尽量避免尽力对象的实例。下面的例子将帮助你理解这条原则： 

当你从用户输入的数据中截取一段字符串时，尽量使用substring函数取得原始数据的一个子串，而不是为子串另外建立一份拷贝。这样你就有一个新的String对象，它与原始数据共享一个char数组。 
如果你有一个函数返回一个String对象，而你确切的知道这个字符串会被附加到一个StringBuffer，那么，请改变这个函数的参数和实现方式，直接把结果附加到StringBuffer中，而不要再建立一个短命的临时对象。 

一个更极端的例子是，把多维数组分成多个一维数组。 

int数组比Integer数组好，这也概括了一个基本事实，两个平行的int数组比(int,int)对象数组性能要好很多。同理，这试用于所有基本类型的组合。 
如果你想用一种容器存储(Foo,Bar)元组，尝试使用两个单独的Foo[]数组和Bar[]数组，一定比(Foo,Bar)数组效 率更高。（也有例外的情况，就是当你建立一个API，让别人调用它的时候。这时候你要注重对API借口的设计而牺牲一点儿速度。当然在API的内部，你仍 要尽可能的提高代码的效率） 

总体来说，就是避免创建短命的临时对象。减少对象的创建就能减少垃圾收集，进而减少对用户体验的影响。 

使用本地方法
当你在处理字串的时候，不要吝惜使用String.indexOf(), String.lastIndexOf()等特殊实现的方法（specialty methods）。这些方法都是使用C/C++实现的，比起Java循环快10到100倍。 

使用实类比接口好 
假设你有一个HashMap对象，你可以将它声明为HashMap或者Map: 
Map myMap1 = new [...]]]></description>
		<wfw:commentRss>http://blog.cnlaoKe.com/2009/08/03/59/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ADT 安装过程中的错误： requires plug-in org.eclipse.wst.sse.ui.</title>
		<link>http://blog.cnlaoKe.com/2009/03/29/68/</link>
		<comments>http://blog.cnlaoKe.com/2009/03/29/68/#comments</comments>
		<pubDate>Sun, 29 Mar 2009 09:38:53 +0000</pubDate>
		<dc:creator>CNlaoKe</dc:creator>
				<category><![CDATA[Android]]></category>

		<guid isPermaLink="false">http://blog.cnlaoKe.com/2009/03/29/68/</guid>
		<description><![CDATA[



大家在学习Google手 机平台Android的过程中，经常在安装ADT的时候遇到“requires plug-in org.eclipse.wst.sse.ui”的提示，使得“Android Editors”不能得以顺利安装。查看了一下Google提供的文档，其中有一种简易的方法如下：
1.点击Eclipse的 Help菜单，选择software updates &#62;&#62; Find and Install&#8230;&#62;&#62;search for new features to install。打开Update Sites to Visit窗口。

2.选择 Android Plugin 和 Europa discovery site，然后按“Finish”按钮继续。
3.在Seach Result窗口中，点选Android Plugin，此时会在窗体的顶部出现错误提示 &#8220;requires plug-in org.eclipse.wst.sse.ui&#8221;。

4.Europa discovery site那个CheckBox不要选择，然后点击窗体右部的“Selected Required”按钮，Eclipse将自动寻找其他所需组件，并自己予以选择。 
5.点击“Next”按钮，出现License窗体，选择接受，按Next进行后续安装，根据自己网络速度的不同，可能需要一段时间，就安心地等待吧（不再赘述）。





]]></description>
		<wfw:commentRss>http://blog.cnlaoKe.com/2009/03/29/68/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[转]为什么Android将掀起一场手机领域的狂风</title>
		<link>http://blog.cnlaoKe.com/2009/03/25/61/</link>
		<comments>http://blog.cnlaoKe.com/2009/03/25/61/#comments</comments>
		<pubDate>Wed, 25 Mar 2009 09:31:34 +0000</pubDate>
		<dc:creator>CNlaoKe</dc:creator>
				<category><![CDATA[Android]]></category>

		<guid isPermaLink="false">http://blog.cnlaoKe.com/2009/03/25/61/</guid>
		<description><![CDATA[整个 2007 年的 9 月，我都把时间花在了撰写《 从 Java EE 到 Java ME 的通讯 》这篇文章上。其实这并不是对 2 年前的项目进行整理并 post 出来而已，这完全不是主要目的！！！
看 官们完全没有理解我的用意，我得到的全是“文章转载”这样的留言回复！那篇文章的感言我这样写的：“要实现遐想并解释上面的问题有待于广大开发者的共同努 力，把自己的业余时间都投入在类似 db4oME 这样的技术上，如果这样的分布式数据库能成功实现，我想这会给移动计算带来一场革命，更多依托网络、数据库的手机应用程序将会诞生，发挥 Java 强大的优势！”
我是 2007 年 11 月底得知 Android 的，正好对应了上面的感言！不知道国人是怎么想的，难道做手机应用程序没有做手机游戏有前途，还是无话可说只能对我的感言嗤之以鼻？如果是这样，那么看了本文之后也许会让你如梦初觉 ……
为 手机 设备而生的 Android软件开发集合包 已经 发布了一周 。作为 db4o对象数据库 创始人的我来讲，这是我们的产品和公司最值得兴奋的事件之一。
Android 将把零散的手机开发平台统一起来，而且它可以开发基于位置的应用程序来服务全世界的用户。这就是为什么会掀起一场手机领域狂风的原因。
内容
（略，参考下面详细标题。）
这场狂风的前景
从 全球化观点来看，手机操作系统是非常之零碎的。手机制造商和运营商这些关键角色，他们都有自己的一套私有技术。被认为是全球性的如 Symbian ，微软和 Apple 都显得较小了，他们每年分别为全球提供 60million 、 20million 以及计划的 10million 部手机。
由于没有标准的操作系统，运营商倾向于使写出的应用程序能让普通浏览器以 Ajax （ Javascript ）方式运行。在手机上面运行 Ajax [...]]]></description>
		<wfw:commentRss>http://blog.cnlaoKe.com/2009/03/25/61/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Android模拟器入门</title>
		<link>http://blog.cnlaoKe.com/2009/03/25/60/</link>
		<comments>http://blog.cnlaoKe.com/2009/03/25/60/#comments</comments>
		<pubDate>Wed, 25 Mar 2009 09:30:58 +0000</pubDate>
		<dc:creator>CNlaoKe</dc:creator>
				<category><![CDATA[Android]]></category>

		<guid isPermaLink="false">http://blog.cnlaoKe.com/2009/08/03/60/</guid>
		<description><![CDATA[



要玩google 手机 G1的模拟器，当然需要先去google上面下载Android的SDK，解压出来后在SDK的根目录下有一个tools文件夹，里面就是模拟器和一些非常有用的工具。
双击“emulator.exe”，直接启动模拟器，简单吧。当然，如果要对模拟器进行一些定制，还是要从命令行调用，带上参数启动。下面就来介绍一下启动是常用的几个参数：
1.模拟器外观的定制：
480&#215;320, landscape: emulator -skin HVGA-L
320&#215;480, portrait : emulator -skin HVGA-P (default)
320&#215;240, landscape: emulator -skin QVGA-L
240&#215;320, portrait : emulator -skin QVGA-P
2.为模拟器加上SD卡：
emulator -sdcard D:\sdcard.img
下面我们再来说说如何创建&#8221;sdcard.img&#8221;文件：
“tools”目录下还有另外一个很好用的工具“mksdcard.exe”，一看名字就知道——make sdcard。对，就用它来创建一个“SD卡”。
命令为：
mksdcard 1024M D:\sdcard.img
OK,这样一个容量为1G的SD卡就创建完毕了。
使用SDCard:
创建: mksdcard &#60;1024M&#62; &#60;sdcard.img&#62;
(bytes(default)，K，M)
连接到模拟器: emulator -sdcard &#60;目录/sdcard.img&#62;
传文件到SDCard: adb push &#60;目录/audio.mp3&#62; &#60;/sdcard/audio.mp3&#62;

玩过手机模拟器的人一般最感兴趣的当然是模拟器能做什么呢？下面一一道来：
GPhone的模拟器有个特有的号码：15555218135，这个就类似我们实体手机的SIM卡号码啦。要实现拨号，用手机？当然不行！
更简单，三步：
1.运行 cmd
2.连接: telnet localhost 5554
3.命令:gsm call 15555218135
look！是不是模拟器上显示来电了？接听/挂断和实体手机一样。
发短信也一样简单，重复上面1，2两步，第三部命令改一下：
sms send 15555218135 Hello,this is a Message.
来说说PC与模拟器文件传输的方法吧。这里需要用到另一个重要工具，也在“tools”目录下，“adb.exe”。
adb:
adb(Android Debug Bridge)是Android 提供的一个通用的调试工具，借助这个工具，我们可以管理设备或手机 模拟器 的状态 。还可以进行以下的操作：
1、快速更新设备或手机模拟器中的代码，如应用或Android系统升级；
2、在设备上运行shell命令；
3、管理设备或手机模拟器上的预定端口；
4、在设备或手机模拟器上复制或粘贴文件
一些常用的操作：
进入Shell: [...]]]></description>
		<wfw:commentRss>http://blog.cnlaoKe.com/2009/03/25/60/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
