Archive for 一月 2014

Java int转String 三种方法效率比较

结果是:
Integer.toString(i)>String.valueOf(i)>""+i
好吧,我是看到""+1这种奇葩写法才想确认一下哪种效率最高。

Mac OS Eclipse Debug 断点 F5单步跳入 F6 单步跳过快捷键不可用的解决

我的机器是mac mini,Debug时狂按F5,F6没反应,打开eclipse设置重新设置快捷键,发现可以输入ctrl+f5,但就是不能输入f5,应该是快捷键与系统冲突了。打开系统快捷键设置,果然,F5,F6被设成了调节亮度,但因为我的机器不是笔记本,不能调节外接显示器亮度,所以按了没反应,果断取消。

TextView android:ellipsize=“end”超出一个字符时不显示…的解决

这应该是TextView的一个BUG,本来设置android:ellipsize=“end”以后,当字符串宽度超出TextView宽度,会在截断String,加上...,但是当字符串只超出1个字符时,最后一个字符被截断,却没有加...,网上搜索了好久也没找到适用的解决方案。最后,我们牛B的PM一句话解决,字符串结尾加空格!如果字符串占用宽度刚好等于TextView宽度,多一个空格,相当于只多一个字符,自动被截断,跟没加效果相同。如果字符串占用宽度比TextView的宽度,还要多一个字符,再加一个空格,相当于多了两个字符,就会截断加上...

Android性能优化建议

翻译自:http://developer.android.com/training/articles/perf-tips.html
一、避免创建不必要的对象
1、如果一个方法返回String,而这个返回值要附加到StringBuffer,那么,应该直接append(方法),不要再有中间临时变量。
2、当从一组输入数据中提取字符串时,尝试使用子串,不要创建一个拷贝。你会创建一个新的String,但是会与原数据共享char[]。需要权衡的是,所有原始输入数据都在在内存中,如果你只使用原数据的一小部分,会浪费一些内存。

更激进彻底的方法是,把多维数组转成多个一维数组。
1、int数组比Integer数组更好,两个平行数组int[]比一个二维数组int[][]更有效,其他基本类型也一样
2、如果要实现一个容器类来保存Foo、Bar,记住:两个一维数组Foo[]和Bar[]比容器数组更高效。(如果是开发提供给别人使用的API,还是使用类封装一下比较好,更容易理解。但自己用的话,你应该尝试更高效的写法)
一般而言,尽可能避免创建短期临时变量。越少的对象创建,意味着GC的频率越低,对提升用户体验有直接效果。
Continue reading ‘Android性能优化建议’ »

Android开发 ListView singleChoiceMode 用代码选中某行

listview有个setSelection方法,在SingleChoiceMode下,经实验无效,获取选中项是用getCheckedItemPosition(),不是getSelectedItemId()。如果要给用户默认选中一项呢?可以调用performItemClick方法,顾名思义,该方法就是触发Item点击事件,也就实现了选中指定项的功能。
选中第0项:


boolean b=listview_selection.performItemClick(listview_selection.getAdapter().getView(0, null, null), 0, 0);

Java设计模式之命令模式

命令模式由三部分组成:
Receiver:命令接收者,最终执行命令的角色
Command:待执行的命令
Invoker:调用者,接收到Command后让Receiver执行
代码来自《您的设计模式》. Continue reading ‘Java设计模式之命令模式’ »

Java设计模式之桥梁模式

桥梁模式特点在于,多个维度都可自由扩展,而继承只能向一个维度扩展。
代码来自《您的设计模式》 Continue reading ‘Java设计模式之桥梁模式’ »

Java设计模式之建造者模式

代码转自:http://www.importnew.com/6841.html
建造者模式,使用不同的Builder,构建出形态不同的产品。与工厂模式最大区别在于,建造者模式最主要的功能是基本方法调用顺序的安排,而工厂方法重点在创建对象,不关心基本方法调用顺序
Continue reading ‘Java设计模式之建造者模式’ »