Posted on 2009-04-09 09:26
冰浪 阅读(180)
评论(0) 编辑 收藏 所属分类:
J2ME
Q: 按理说NOKIA的手机应该比moto及国产手机(MTK)性能要好一点,但是一个大的jar包(比如3MB)的J2ME程序在nokia上跑不起来,但在moto及国产手机上却能跑起来?
A:一个经验丰富的高手告诉我说,主要是两者的JVM实现机制的差别。前者是加载所有的内容到内存,后者是按需加载。所以前者可以在有限的JAR包中提高性能,后者呢?各有利弊吧。
Q:一个J2ME程序,在WTK下面可以很好的运行,但放在我的3250上面,可以成功安装,运行时却没有一点反应。真是郁闷。
A: 这种情况一般是由于内存占用的问题。WTK是在PC上跑的,内存相对来说不吃紧。你的J2ME程序如果在WTK模拟器的范围内,可以跑起来。但在手机上,却没有那么多的内存可用,自然跑不起来。
Q:我的一个J2ME程序,在WTK下面可以正常的从Form切换到Canvas,但放到手机上,却死活切不过来,气死我啦。
A:这时,主要原因也可能是内存占用。
1、showNotify与hideNotify调用的时机。
显示顺序:canvas -> Form -> Canvas
在canvas被绘制前,showNotify()会被调用,在showNotify()执行过程中如果有按键,则存在事件队列中,等showNotify()返回后在执行。
如果这个canvas设置了全屏,则showNotify()之后会调用sizeChanged()
showNotify返回后,开始执行paint()。
这是如果要切换到Form,则会先调用hideNotify(),然后显示Form。从Form切换到canvas,则又会调用showNotify(),返回后,调用paint()。
2、在eclipse里面,也可以像JBuilder那样一次修改一个变量在多个地方的使用,方法是:选择变量 ,shift+alt+R,修改,确定,搞定
3、2ME中,如果想读取文本文件,最好是把这个文本文件用utf-8编码,然后在读取的时候,new String(bytes,"utf-8");
4、在eclipse中,如果出现不能调试的情况,你可以试试把你之前设置的断点都清除掉,然后在try一下。
5、在模拟器上,大小写不敏感,不区分大小写。但是在我的NOKIA3250上,是区分大小写的 。"map.PNG"在wtk模拟器上用map.png可以跑,在手机上是不行的。
6、MIDP 2.0安全机制 与 MIDlet 数字签名
MIDP 2.0 为 GSM/UTMS 设备定义了 4 种保护域: manufacturer( 设备制造商 ) , operator( 移动运营商 ) , trusted third party( 可信任的第三方 ) , and untrusted( 不受信任域 ) ,除了 untrusted 域外,每个保护域都对应一组根证书,用于签名 MIDlet 的签名证书的根证书必须包含在这些根证书中,使用不同的签名证书签名的 MIDlet 将被自动归类予根证书所属的保护域,根证书与保护域的关系是:一个保护域可以有许多个根证书,而一个根证书只能对应于一个保护域。
具体来讲, manufacturer 域属于设备制造商,其根证书是设备制造商自己的根证书;而 operator 域运营商,一般使用其 SIM 卡中的根证书;而 trusted third party 域则预置了全球知名的数字证书颁发机构 (CA) 的根证书,用于验证由 CA 颁发的 MIDlet 签名证书;而 untrusted 域没有根证书,将用于没有签名的 MIDlet 和 MIDP 1.0 。
7、当byte[][] bytes = new byte[2][3]时,bytes.length = 2, byte[0].length = 3
8、while(true)循环的一种替代 for(;;){}
9、javap命令的作用
javap是j2se中的一个查看类的方法声明的工具,比如:
javap -private java.util.Calendar
可以看到这个类的方法声明。
10、Graphics的translate方法的用法
g.translate(x,y)
把绘制的起始坐标移动到x,y位置,绘制的时候,都是相对于(x,y),如果想恢复到默认的坐标系,则g.translate(-x,-y);
(转于http://jacky-zhang.javaeye.com/blog/153654)