近兩個月來,我一直在鑽j2me,但是由於沒有名師開化,再加上資質拙劣,我對j2me的理解一直隔着一層.
開始學j2me,我將精力放在對例子程序的研讀上,發現也並不難,因爲它們在某種程度上框架是一致的,用的代碼也差不多,所以,可以"套".但是,也很難,因爲要想弄明白一個midlet
的生命週期就已經夠像我這樣的初學者受的了.
所以,在這段時間裏,我的問題很多:比如:
1.既然destroyApp(false)不是使MIDlet進入銷燬態,那麼爲什麼還要調用它呢?
2.經過這幾天的觀察,我覺得一個midlet裏應該有如下這麼幾個線程,它和application是不一樣的
3.貪喫蛇裏到底有幾個線程,怎麼我只發現一個?
4.midlet的入口問題
5. props.append(txtField);
props.addCommand(exitCommand);
props.setCommandListener(this);
display.setCurrent(props);
在上面的例子中,display扮演什麼角色,props又扮演什麼角色?(props可以是canvas,也可以是form,也可以是list等的對象)
對於問題1,在csdn中我的問題裏有詳細解答.
對於問題2,我昨天才弄懂,一個midlet中至少有一個線程,如果自己創建了線程,那麼就等於1+自己創建的線程數,
其實這沒什麼說的,不過我當初將midlet看得比較神祕,認爲它不是一個完整的程序,寫了一篇文章<midlet並不是由你一個人來控制>,其實,要是這麼說的話,任何
java程序都不是完整的了,因爲application有jvm,midlet有jams,其實,原因是,我以前沒有做過任何的圖形界面編程,對事件驅動這點上理解得很淺.所以,
midlet中的多線程也很好理解了.
對於問題3,和問題2一樣,是對貪喫蛇代碼的拷問.
對於問題4,我和23歲的幼男有過比較深入的討論,詳情請看
"D:/skyface/a_Bak/study&work/Items/4th Item/J2ME/開發/心得"中"midlet程序的入口問題.txt"一文.
對於問題5,我覺得也是我對midlet心竅通了的標誌,
最重要的是display.setCurrent(props)這句上,這句就等於是,將props設爲當前容器,所謂當前容器,也可以說是被激活的佈局管理器,就是說,這個對象props上還有
其它對象,比如說命令對象,文本域對象.而對於命令對象,它附着在某管理器上之後,必須有這句:props.setCommandListener(this);意指監聽命令,通常都是這麼寫的
setCommandListener(this);
此外,我還對jad/manifest文件的屬性提出了問題,也解決了,詳情請看<關於jad和manifest的屬性問題.txt>和文件夾<建立一個有包的jar和jad所注意的>裏所提及的
我終於真正進入j2me的大門,我很高興,撰文以記之!