初學(xué)java的時候一般都寫過如下的HelloWorld程序,今天我預(yù)備具體講述一下J2ME中的HelloWorld。無論你是J2ME開發(fā)高手還是新手都應(yīng)該讀讀這篇文章,我想它會對你有所幫助!
在javax.microedition.midlet包中定義了一個非常重要的類MIDlet,所有J2ME的應(yīng)用程序都必須擴(kuò)展這個類,只有這樣才可以使得應(yīng)用治理軟件(application Management Software)治理MIDlet,包括下載、安裝和刪除。在被AMS治理的同時,MIDlet可以和應(yīng)用治理軟件通信通知應(yīng)用治理軟件自己狀態(tài)的變化,通常是通過方法notifyDestroyed()和notifyPaused()實現(xiàn)的。最后MIDlet還可以通過getAppPRoperty(String name)讀取在jad文件中定義的屬性值。
MIDlet有三個狀態(tài),分別是pause,active和destroyed。在啟動一個MIDlet的時候,應(yīng)用治理軟件會首先創(chuàng)建一個MIDlet實例并使得他處于pause狀態(tài),當(dāng)startApp()方法被調(diào)用的時候MIDlet進(jìn)入active狀態(tài),也就是我們平時所說的運(yùn)行狀態(tài)。在active狀態(tài)調(diào)用destroyApp(boolean unconditional)或者pauseApp()方法可以使得MIDlet進(jìn)入destroyed或者pause狀態(tài)。值得一提的是destroyApp(boolean unconditional)方法,很多開發(fā)者對unconditional參數(shù)不是很理解,事實上,當(dāng)destroyApp()方法被調(diào)用的時候,AMS通知MIDlet進(jìn)入destroyed狀態(tài)。在destroyed狀態(tài)的MIDlet必須釋放了所有的資源,并且保存了數(shù)據(jù)。假如unconditional為false的時候,MIDlet可以在接到通知后拋出MIDletStateChangeException而保持在當(dāng)前狀態(tài),假如設(shè)置為true的話,則必須立即進(jìn)入destroyed狀態(tài)。
下面是根據(jù)上述問題我編寫的一個J2ME中的HelloWorld程序,他比j2se中的helloworld要復(fù)雜一點(diǎn)。新手可以仔細(xì)看看。
package com.j2medev.mingjava;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
import javax.microedition.lcdui.*;
public class HelloWorld extends MIDlet implements CommandListener
{
private Display display;
private Form mainForm;
private StringItem stringItem;
private Command exitCommand = new Command("Exit", Command.EXIT, 1);
public static final String WEB_SITE = "WEB_SITE";
protected void startApp() throws MIDletStateChangeException
{
initMIDlet();
display.setCurrent(mainForm);
}
private void initMIDlet()
{
display = Display.getDisplay(this);
mainForm = new Form("Hello World");
stringItem = new StringItem(null, null);
String text = getAppProperty(WEB_SITE);
stringItem.setText(text);
mainForm.append(stringItem);
mainForm.addCommand(exitCommand);
mainForm.setCommandListener(this);
}
protected void pauseApp()
{
}
protected void destroyApp(boolean arg0) throws MIDletStateChangeException
{
System.out.println("exit the application");
}
public void commandAction(Command cmd, Displayable display)
{
if (cmd == exitCommand)
{
try
{
destroyApp(false);
notifyDestroyed();
} catch (MIDletStateChangeException e)
{
e.printStackTrace();
}
}
}
}
新聞熱點(diǎn)
疑難解答