javax.microedition.rms:Record Management System (持久化)javax.microedition.midlet:MIDlet 框架與環境互動javax.microedition.io:網路 (GCF)javax.microedition.lcdui:UI (High-level / Low-level)加上 java.lang、java.util 共六包構成開發基礎。
javax.microedition.midlet.MIDlet (abstract)
↑ extends
MyMIDlet (concrete)
類似 Applet 模式,所有 MIDlet 必須繼承抽象 MIDlet 類。
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class HelloWorld extends MIDlet implements CommandListener {
private Command exitCmd;
private TextBox tb;
public HelloWorld() {
exitCmd = new Command("Exit", Command.EXIT, 1);
tb = new TextBox("Hello MIDlet", "Hello, World!", 15, 0);
tb.addCommand(exitCmd);
tb.setCommandListener(this);
}
protected void startApp() {
Display.getDisplay(this).setCurrent(tb);
}
protected void pauseApp() {}
protected void destroyApp(boolean u) {}
public void commandAction(Command c, Displayable d) {
if (c == exitCmd) {
destroyApp(false);
notifyDestroyed();
}
}
}
HelloWorld, MIDlet Class: HelloWorldHelloWorld.java 放入 apps/HelloWorld/src/
new() → Paused --startApp()--> Active --pauseApp()--> Paused
↑___________________________|
destroyApp() → Destroyed
startApp() 被調用,取得顯示焦點,可重複進入 (如來電結束返回)。destroyApp() 成功返回,資源釋放,不可逆。開發者可請求狀態變更:resumeRequest()、notifyPaused()、notifyDestroyed()。
public class FlowMIDlet extends MIDlet {
public void startApp() { System.out.println("startApp"); pauseApp(); }
public void pauseApp() { System.out.println("pauseApp"); destroyApp(true); }
public void destroyApp(boolean u) { System.out.println("destroyApp"); }
}
輸出順序:startApp → pauseApp → destroyApp,驗證狀態機流向。
MIDlet Suite (.jar) ├── MIDlet-1 (class) ├── MIDlet-2 (class) ├── Manifest.mf (屬性清單) └── resources (圖片/文字/資料) + Descriptor (.jad) 純文字屬性檔
JAD 部署描述,JAR 實際載荷;兩者屬性 (Name/Version/Vendor) 必須一致。