经程序测试发现:
构造方法在程序启动时首先调用,而且构造方法仅在程序启动时调用一次,
接着是调用startApp(),startApp()调用完后,仍可能会被再次调用,如在使程序进入暂停状态调用pauseApp()后,再重新启动程序时,startApp()会再次重新调用。
经过测试还发现,如果一个状态下(如:开始状态)的方法没有执行完成,就不能正常进行其它状态。如在下面程序中的情况,在startApp()中加入一个死循环的计数。即使是选择了暂停选项,手机界面上表面会呈现暂停,实际上仍在断续运行,在下面的测试程序中,当按下暂停后计数表面停止,实际上当再次激活时,计数马上跳到一个很大的数(正常计数情况下的数)。
destroyApp()方法在程序结束后调用。但如上面情况所说,如果上一状态(startApp()、pauseApp())的程序没有运行结束,destroyApp()方法也不能在按下退出按键后正常调用。
测试程序:
|
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Form;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
public class Helloword extends MIDlet {
private Display display;
private Form form;
private int i;
public Helloword() {
System.out.println("调用构造方法");
display=Display.getDisplay(this);
form=new Form("第一个J2ME测试程序");
display.setCurrent(form);
i=0;
}
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
System.out.println("程序销毁...");
System.gc();//内存回收
}
protected void pauseApp() {
System.out.println("程序暂停...");
}
protected void startApp() throws MIDletStateChangeException {
System.out.println("调用startApp()方法");
while(true){
form.append("计数:\n"+i);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
form.deleteAll();
i++;
}
}
}
|