Posted on 2009-04-09 09:26
冰浪 閱讀(186)
評論(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)