JAVA资格认证:J2ME机型开发bug收集

JAVA资格认证:J2ME机型开发bug收集,第1张

JAVA资格认证:J2ME机型开发bug收集,第2张

小MOTO C系列
常见机型:C650
手机屏幕:128*128
游戏屏幕:128*116
非全面屏屏幕:128*100
JAVA联网:CMWAP需要代理[/br任何字体选项都是默认字体
MIDP:2.0
CLDC:1.0
JAVA单个容量限制:标准100K(实际上不限需要授权
4:特殊4:C650型号:该型号不支持setMediaTime。playerUpdate发的播放器是副本所以应该用
equal代替= =
MOTO C550/C370/E380系列
手机屏幕:96*65
游戏屏幕:96*64
非全屏屏幕:96*64
JAVA联网:CMWAP需要代理
参考Moto C
MIDP: 1.0
CLDC 其中可以实现相当于MIDP2.0的功能
MOTO E398、V600系列
手机屏幕:176*220
游戏屏幕:176*204
非全面屏屏幕:176*182
JAVA联网:CMWAP需要代理[/br]
MIDP:2.0
CLDC:1.0
JAVA单个容量限制:不限,可 需要授权
专用4: V300系列,键值与
MOTO C975/C980/V980系列完全相同
手机屏幕:176*220
游戏屏幕:176*204
非全屏屏幕:176*182
JAVA联网:CMWAP需要代理[ MIDP: 2.0
CLDC: 1.1 [/br 小于手机自带内存
JAVA栈容量:1.5M
特殊1:支持标准3D API
特殊2:支持蓝牙
MOTO E680系列
手机屏幕:240*320
游戏屏幕:240 * 380 JAVA联网:CMWAP需要代理和直连
字体大小:内置三种字体
MIDP: 2.0
CLDC: 1.1 小于手机自带内存
JAVA栈容量:1.5M(预计)
特殊1:支持标准3D API
特殊2:支持蓝牙
特殊3:5空电池on 3:4:E680占用一个字符宽度
特殊4:]
诺基亚S40 V1
手机屏幕:128*128
游戏屏幕:128*128(FullCanvas ??
JAVA联网:CMWAP直连
字号:三种字号,最小的字体为12*12,一行大概有10个汉字
MIDP:1.0
CLDC:1.0
JAVA单机容量限制:64KB
JAVA栈容量:未知
特殊1:按键会有延迟。中断后,原线程将继续在后台运行,直到调用repaint。内存开销不当会死机
诺基亚S40 V2
手机屏幕:128*128
游戏屏幕:128*128(FullCanvas或setfullscreenmode(ture))
)
非全屏屏幕:128*???
JAVA联网:CMWAP直连
字号:三种字号,最小字体为12*12,一行约10个汉字
MIDP:2.0
CLDC:1.0
JAVA单机容量限制:110~128KB
Java栈容量:未知
诺基亚6230i
手机屏幕:08(分辨率在此)
JAVA联网:cmbr 参考S40
MIDP:2.0
CLDC:1.0
JAVA单机容量限制:未知
JAVA栈容量:未知
诺基亚S60 MIDP1.0
手机屏幕:176* 208 [ 08(全画布)
非全屏:176*144
JAVA联网:CMWAP直连
字体大小:未知,约12-13
特殊2: 3650模型:频繁的I/O操作会崩溃,所以尽量在游戏初始化的时候一次性读入数据。
特殊3: N-gage型号:setClip和drawRegion在后台缓冲区上无法匹配。声音播放有问题。Build
Special 4: N-gage型号:声音播放有问题。建议播放I/O操作和其他与系统底层相关的调用后的声音
诺基亚S60 MIDP2.0
手机屏幕:176*208
游戏屏幕:176*208(FullCanvas或setfullscreenmode(ture))
)
非全屏屏幕:176*208。14
Java联网:CMWAP直连
字体大小:未知,一行大约能显示12-13个汉字
MIDP:2.0
CLDC:1.0
Java单个容量限制:未知

特殊2: 6600型号:setClip和drawRegion匹配。在欧洲版6600上,无法正确设置裁剪框,导致绘图错误。
特殊3: 7610型号:drawRegion在该型号上会变慢。建议在诺基亚UI API上使用drawImage。
特殊4: 7610模型:绘图函数调用不当会崩溃。
特殊5: 6681模型:频繁的I/O操作会崩溃,所以尽量在游戏初始化的时候一次性读入数据。
特6: 6681型号:使用2.0 drawRegion会造成内存泄露,所以尽量减少使用flip,尤其是在绘制地图的时候,尽量使用1.0 drawImage实现
索尼爱立信K700C
手机屏幕:176*220
游戏屏幕:176* 220 (setfullscreen模式(true))
游戏屏幕:176 * 28(com . Nokia . mid . ui . full canvas
MIDP:2.0
CLDC:1.1
Java单容量限制:???
JAVA栈容量:512K(实际使用中感觉不止这个数)
特殊1:支持NOKIA UI API,但是drawpixels()、Getpixels()这两个比较差,不能用
特殊2:支持标准3D API
特殊3:单个类文件不能超过70k(JAR包的压缩大小),否则,
波导S689无法加载
手机屏幕:128*160
游戏屏幕:128*144
非全面屏屏幕:128*128(预估)
JAVA联网:CMWAP需要代理[/br内置字体
MIDP:2.0
CLDC:1.0
JAVA单个容量限制:200K
0)
MIDP:2.0
CLDC:1.0
Java单个容量限制:256k
JAVA栈容量:512K
三星X108/X608
手机屏幕:128 *。 ]非全屏屏幕:128*110
JAVA联网:CMWAP需要代理
字体大小:未知,一行字符数未知,内置字体字体font (0,0,0)
MIDP:1.0
CLDC:1.0[??
JAVA栈容量:未知
手机JAVA的奇怪现象
2008-01-08 21:09
以下记录的都是各种奇怪的问题,bug,或者...手机Java实现中的特点,根据一个项目的开发经验总结出来的。不过覆盖的手机型号还是有限的。所以,很有可能一些“特性”会存在于更多相同JVM(比如相同平台,相同厂商)的手机中。
JAVA手机网[www . cnjm . net]= = 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()方法中的代码行数...
我承认我还没有彻底搞清楚其中的玄机。我知道摩托罗拉和索尼埃里克森是如何实现JVM的。我只知道keypress中的所有代码都被提取到另一个函数中,只有参数被传递给keypress中的新函数,问题就消失了...
= =超慢drawRegion ==
除了N-Gage QD,几乎所有的NokiaS60手机都实现了MIDP2支持。在MIDP2中,最重要的特性之一就是Graphics.drawRegion这个API可以很容易地在画布上旋转、剪切和绘制图片。
然而这个API在Nokia3230、Nokia7610等手机上的实际表现确实差强人意。所以这个最重要的API就成了摆设...没什么事情可做,但是迫切需要继续MIDP1的做法自己剪切旋转,或者像我一样懒,直接512k美工把旋转后的图片全部做出来...
Java移动网[www.cnjm.net]
==怪异内存容量==
然而实际测试结果显示,Nokia3125实际内存只有412k左右,相差100k K,好在Nokia3125并不是市场占有率很高的机型。但这是我正在使用的模型...
= =不能重画==
这个问题只存在于SonyEricssonK700c中。在keyPressed()中调用repaint()来重绘屏幕没有响应。
JAVA移动网络[www.cnjm.net]
解决方法是在keyReleased()中补一个repaint()...
= = UTF8 = =
或SonyEricssonK700c。新字符串(byte[],charset)中存在问题。也就是说,当获得某个byte[]并想用UTF8作为字符集将其转换成字符串时,使用上述方法在SonyEricssonK700c上会丢失该字符。这个现象太奇怪了,我还没搞清楚字符在什么情况下会丢失(我甚至写了一个测试程序在真机上运行,得出的结论是丢失字符的原因可能比较复杂,简单的取丢失字符附近的一个子串来衡量没有问题)。
幸好有解决的办法。不要用new String来结束,而要用更麻烦的方法,比如像我这样,在外面用InputStreamReader (bais,“E398”)来使用ByteArrayInputStream,然后用StringBuffer一个char一个char地读入,最后用tostring()...
= = not * copyArea ==
。CopyArea是一个通用的图形API,用于复制整个屏幕的像素(2D动态背景游戏几乎是必不可少的)。根据Sun的官方规范,手机制造商有义务确保其API实现中没有覆盖冲突。但是摩托罗拉显然做得不够好。在摩托罗拉的手机上使用这个API会造成随机地图混乱...
解决方法是自己实现另一个机制。例如,使用另一个至少与屏幕大小相同的图像作为缓冲区,并使用两个drawImage代替copyArea……...然而,这种方法的明显缺点是它消耗更多的内存(那是不小于屏幕大小的图像!)。如果内存实在吃紧,只能退而求其次,作为缓冲的图像不断缩小。drawImage的次数持续增加...但是这个时候,你需要手动解决覆盖冲突...
Java手机网[www.cnjm.net]
=不能安静的3220 = =
不知道S40平台有没有这个问题,手里支持MIDI的手机太少了...【即使调用VolumeControl.setLevel(0)后,仍然有声音,与Sun官方规范完全不符...没办法,只有在需要静音的时候,才能再补一个VolumeControl.setMute(真)。
== never ready ==
这是手机java获取网络数据的常用代码:while(inputstream . ready()){ inputstream . read()}。
JAVA移动网络[www.cnjm.net]但是经过测试,在Nokia3230上,这个ready总是返回false……...没办法,如果不修改上面的代码,自己实现一个继承类。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » JAVA资格认证:J2ME机型开发bug收集

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情