百度首页 | 百度空间
 
查看文章
 
J2ME中destroyApp()、pauseApp()、startApp()、构造方法的调用顺序
2007-11-23 21:17
在本文中,分析了MIDLET中各方法(destroyApp()pauseApp()startApp()、构造方法)的调用情况,

经程序测试发现:

构造方法在程序启动时首先调用,而且构造方法仅在程序启动时调用一次,

接着是调用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++;
   }  
}
}


类别:Java | 添加到搜藏 | 浏览() | 评论 (0)
 
最近读者:
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码:
 

     

©2008 Baidu