60
游戏屏幕:128*144
非全屏屏幕:128*128(估计)
JAVA联网:CMWAP需要代理
字体大小:不明, 一行约8个中文字,内置一种字体
MIDP:2.0
CLDC:1.0
JAVA单个容量限制:200K
JAVA堆栈容量:512K
------------------------------------------------------------------------------
阿尔卡特 OT556/557
手机屏幕:128*160
游戏屏幕:128*160
非全屏屏幕:128*129
JAVA联网:CMWAP需要代理
字体大小:14*14,一行中文字个数约8个,内置一种字体font(0,0,0)
MIDP:2.0
CLDC:1.0
JAVA单个容量限制:256k
JAVA堆栈容量:512K
----------------------------------------------------------------------------------
三星X108/X608
手机屏幕:128*128
游戏屏幕:128*128(全屏补丁实现)
非全屏屏幕:128*110
JAVA联网:CMWAP需要代理
字体大小:不明,一行中文字个数不明,内置一种字体font(0,0,0)
MIDP:1.0
CLDC:1.0
JAVA单个容量限制:???
JAVA堆栈容量:不明
下面记载的都是手机java实现中各种奇怪的毛病,bug,或者……特性,是根据某项目的开发经验总结出
来的。但是涵盖的
手机型号还是有限。因此很有可能某些“特性”会存在于更多的采用了相同JVM(比如平台相同、生产厂商)的手机上。
== 早期S60的内存泄漏 ==
这个bug可以上溯至2003年,甚至更早。表现为java应用中如果使用了Class.getResourceAsStream("本地文件")无法释
放其占用的内存,是的,没有任何办法,无论是调用获得的的InputStream实例的close()或将其设为null,甚至显式强制
System.gc(),都没有效果。结果就是至少和本地文件同尺寸的内存成为了无法回收的垃圾。这个问题还影响到以
Class.getResourceAsStream()为基础的Image.createImage()(这个是最要命的,如何能够不使用图片资源呢!)。
这个bug据说在新的S60上已经解决了。但是Nokia3230(4.0526.2ch)、Nokia7610(6.0525.0ch)都存在这个
问题。对
于这些个有问题的机型,在java程序中是无法完美解决这个问题的,只能尽量避免。比如集中、统一载入资源,永不释放
(也就是说,尽量控制泄漏的次数)。当然,这会对已有代码造成很大影响。毕竟手机java应用是内存受限
系统的典型,
大多数情况下,珍贵的内存中只保留需要的资源。
== 键盘响应事件 ==
在MIDP1中,获取键盘事件只能自己实现Canvas.keyPressed()。但是MotorolaE398和SonyEricssonK700c的实现却很奇
怪。表现为左右软键有可能在这个方法中捕获不到。而是否能够成功捕获,取决于keyPressed()方法中代码的行数……
我承认我没彻底搞清楚这其中的玄机。鬼知道Motorola和SonyEricsson是怎么实现的JVM。我只知道把keyPressed中的所
有代码提取到另外一个函数中,在keyPressed只把参数传递给新函数,问题就消失了……
== 超慢的drawRegion ==
除了N-Gage QD,几乎所有的NokiaS60手机都实现了MIDP2的支持。MIDP2中,最为重要的几个特性之一就是<