public abstract class MIDlet {
private MIDletProxy state;
MIDletProxy getProxy() { return state; }
protected MIDlet() {
state = new MIDletProxy(this);
}
protected abstract void startApp() throws MIDletStateChangeException;
protected abstract void pauseApp();
protected abstract void destroyApp(boolean unconditional) throws MIDletStateChangeException;
public final void notifyDestroyed() { state.notifyDestroyed(); }
public final void notifyPaused() { state.notifyPaused(); }
public final String getAppProperty(String key) {
return state.getMIDletSuite().getProperty(key);
}
public final void resumeRequest() { state.resumeRequest(); }
public final boolean platformRequest(String URL) throws ConnectionNotFoundException {
return state.platformRequest(URL);
}
public final int checkPermission(String permission) {
return state.checkPermission(permission);
}
}
startApp/pauseApp/destroyApp)public final 方法均委托給 state 實例final 方法防止子類繞過 AMS 直接操作生命週期要全面理解 MIDlet 生命週期管理,必須進一步研究 MIDletProxy 的實現(通常在廠商 JVM 實現中,非標準 API 可見)。重點關注:
platformRequest 的異步處理機制這也是為什麼 J2ME 規範強制要求繼承 MIDlet 而非實現接口的原因——框架控制反轉的經典體現。