J2me程序由於其特別的運行環境限制,所以優化就顯得比擬重要,以下是我在學習J2ME編程所收集的一些技巧和自己的心得。
本文重要是闡明J2ME平台上的特別優化方法,與J2SE重復的一些技巧就不再贅述了。
1.顯示圖象時斷定好你的fps,最好先做幾次小實驗,這樣能讓你在顯示後果和運行速度上有比擬好的平衡。
2.GaMacanvas.getGraphics()每次都會產生一個全新的對象,但是對這些對象的把持都是對同一個graphics,所以還是只取一次供後面應用。
3.讓多個對象應用同樣的*********,比如讓主MIDlet類實現CommandListener和ItemStateListener接口。
4.考慮應用手機開發商供給的一些sdk,沒人會比他們更懂得他們手機,所以有些時候能明顯提高速度,特別是圖片,視頻應用方面。
5.應用監督工具分析MIDlet的瓶頸,wtk和各個公司供給的開發包裡都會有,可以找到程序的弱點。假如是在手機上,用timer測試你認為有可以的處所。
6.應用System.gc(),在無線程阻塞的情況下可以有效的緩解內存壓力,但是有些公司不是太推薦應用(如nokia).sun的說法也是越低真個機子履行的越慢,總之,慎用吧。
7.用固定的數組代替應用Vector。
8.圖片的優化。考慮應用設備的規格,可能高分辨率的圖片不必定顯示的出來。
9.不用的對象賦值為null,為更快的回收
10.用混雜器處理你的類文件,防止反編譯,還有一個好的副作用就是它減小class文件的大小,由於混雜器往往用較短的字符串代替本來的變
量或方法名。
11.若數據太大,可以將數據編碼為字符串,運行時解碼,或把數據存為二進制文件並與程序打包,用類裝載器的getResourceAsStream方法在運行時存取。
12.應用現有的類,比如你應用了GameCanvas,就不用自己天生off-screen,另外像CLDC的profile沒有結構聚集類,所以我們可以用內建的Hashtable和Vector類來實現。
13.用優化軟件jPresto(http://www.s5systems.com/jPresto.htm)---沒用過,不過暫且寫上吧。
假如對文件大小,內存限制非常嚴格,這時候就只能用一些非慣例的方法了,可能這些方法背離了OO思想,但是多數情況下,它是起到了非常積極的作用的(但是也可能),假如你更在意於程序的保護和擴大方面,我建議你還是跳過吧 -_-||
14.把所有資源文件做成一個數據文件。
15.把所有的小圖片文件做成一個文件,在運行時再"切割"開。
16.應用有限的面向對象,由於純粹的OO往往意味著更多的虛方法,更多的層次關系,更多的class
17.天生盡可能少的class,class都有必定的系統開銷。 18.class中天生盡可能少的方法。速度比擬:同步方法<接口方法<實例方法<final方法<靜態方法。
19.用final static限定方法可以獲得小幅的速度提高。
20.對數據成員用public限定,來代替get和set方法,不過要留心安全性。
J2ME優化可能使你的程序在不同的模仿器,不同的設備下有不同的運行後果,所以 優化必定要建立在開發設備的規格上。
以上所列舉的方法不必定在所有midp設備上都起作用,也不必定都合適每一個程序,總之,應當根據自身的情況。