J2ME中destroyApp()、pauseApp()、startApp()、构造方法的调用顺序

在本文中,分析了MIDLET中各方法(destroyApp()pauseApp()startApp()、构造方法)的调用情况,

经程序测试发现:
构造方法在程序启动时首先调用,而且构造方法仅在程序启动时调用一次,
接着是调用 startAp p()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++;
   }  
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值