博文

目前显示的是 八月, 2006的博文

不要把非项目文件扔在workspace里面

workspace,当然就是eclipse的工作区。之前一直都这么做的,资源、其它脚本,统统都在workspace里面,尽管其中相当一部分根本不受eclipse管理。

一次偶然的机会,eclipse在build workspace的时候(这种操作eclipse会在很多情况下进行,比如refresh某个项目的时候)死掉了。进度永远是0%,而且无法正常退出,只能强制杀掉进程。

最开始以为是windows几天没关,又犯病了,重启之后,故障依旧。

于是留意eclipse在build workspace时候给出的提示。原来是说几个非项目的文件夹 的路径和eclipse记录的不符。eclipse还善意的提示我将这几个“项目”按正确路径重新导入即可……

一不做二不休,把几个非项目文件夹请出了workspace。重启eclipse,故障解决。

看来,还是不要太相信IDE!!

手机 Java 之怪现象

ok,我承认题目是用来吸引眼球的。但是,不能不承认的是,这篇文章会很有用,很有用……尽管目前可能只是对我有用……因为我记性不够好……

下面记载的都是手机 java 实现中各种奇怪的毛病,bug,或者……特性,是根据某项目的开发经验总结出来的。但是涵盖的手机型号还是有限。因此很有可能某些“特性”会存在于更多的采用了相同 JVM(比如平台相同、生产厂商)的手机上。

== 早期 S60 的内存泄漏 ==
这个 bug 可以上溯至 2003 年,甚至更早。表现为 java 应用中如果使用了 Class.getResourceAsStream("本地文件") 无法释放其占用的内存,是的,没有任何办法,无论是调用获得的的 InputStream 实例的 close() 或将其设为 null,甚至显式强制 System.gc(),都没有效果。结果就是至少和本地文件同尺寸的内存成为了无法回收的垃圾。这个问题还影响到以 Class.getResourceAsStream() 为基础的 Image.createImage()(这个是最要命的,如何能够不使用图片资源呢!)。

这个 bug 据说在新的 S60 上已经解决了。但是 Nokia 3230(4.0526.2ch)、Nokia 7610(6.0525.0ch)都存在这个问题。对于这些个有问题的机型,在 java 程序中是无法完美解决这个问题的,只能尽量避免。比如集中、统一载入资源,永不释放(也就是说,尽量控制泄漏的次数)。当然,这会对已有代码造成很大影响。毕竟手机 java 应用是内存受限系统的典型,大多数情况下,珍贵的内存中应该只保留需要的资源。

== 键盘响应事件 ==
在 MIDP1 中,获取键盘事件只能自己实现 Canvas.keyPressed()。但是 Motorola E398 和 SonyEricsson K700c 的实现却很奇怪。表现为左右软键有可能在这个方法中捕获不到。而是否能够成功捕获,取决于 keyPressed() 方法中代码的行数……

我承认我没彻底搞清楚这其中的玄机。鬼知道 Motorola 和 SonyEricsson 是怎么实现的 JVM。我只知道把 keyPressed 中的所有代码提取到另外一个函数中,在 keyPressed 只把参数传递给新函数,问题就消失了……

== 超慢的 d…

宁缺毋滥

越是现代人,恐怕越讨厌罗嗦。以至于无论内容是否正确,当重复的次数超过了受众的忍耐,都会引起习惯性的逆反。这个不能把责任推到受众的非理性一面,这明显跟心理学有关。对任何事物,绝大多数人类显然都有忍耐的极限。比如前些天某个大学调查的,欧洲人忍耐红灯的极限不过1分钟左右等等。中国人在这方面显然要更强一些。就在北京,我等过的最长的红灯恐怕要5分钟。而虽然大家都很不满,却习以为常。

不过今天要说的事情和红绿灯没关系。而是公交车上移动电视频道的广告。

这则广告相信大多乘坐北京公交的朋友百分之百见过。三维动画创作的范伟,愁眉苦脸,“酒不能喝,辣椒不能吃,车不能开,睡觉还得趴着”。这时同样三维动画创作的赵本山出现“咋的了?”“我痔疮又犯了”哦,到此时才恍然大悟,原来是治疗难言之隐的广告。之后便是“赵本山”的大锻独白,“北京东大……多项无痛微创技术……治疗各种内痔外痔混合痔肛瘘直肠息肉……治完就能走……北京人都知道”等等等等,诸如此类。

从技术的角度看,这则广告的制作水准相较国内同类还是相当之高。人物建模精细,过场安排紧凑幽默,画面与台词配合的也很有国内flash作者的风格,和脑白金的系列三维动画广告相当。

但是,在8月26日下午4点多的大概不到30分钟内,这则广告在移动电视上出现了不下六次……即使能够分辨广告制作水平如我,也已经在呕吐的边缘,更何况如我父辈的广大乘客,印象中,父亲无论何时何地,听到这类广告就会光火不已,认为这类广告,有伤大雅,上不了台面。于是那一路颠簸,是伴随着不断重复的“治疗各种内痔外痔混合痔肛瘘直肠息肉”过来的。下车前铁青着脸用怨恨的眼神最后瞥了那电视一眼,心里琢磨着不知道这医院给了移动电视多少钱。

倘若真的没什么可播放,请您欣赏,自然风光,动物世界,都是很好的内容。认为有东西总比没有好,就肆无忌惮的重复广告,简直是愚蠢至极的想法。

正如昨天在鼎好陪一个朋友装机,面对如苍蝇一般嗡嗡作响挥之不去的推销导购,我终于矜持不住斯文,“你们谁家我也不去,真讨厌!”