Pass J2ME (1) - MIDP State |
| 作者:未知 来源:转载 发布时间:2005-8-2 9:15:46 |
|
对于Midlet状态,有一个叫application management software的会专门负责管理。你所有要关心的,就是怎样和这个AM打交道。 pauseApp() destroyApp() startApp() 重写这三个方法。AM将会在相应的时间调用。 而 notifyDestroyed() notifyPaused() resumeRequest() 则是让你有机会去通知AM需要做什么。 下面是一个简单的例子,可以根据自己扩充测试一下。有一点比较奇怪的就是,理论上说,在Midlet处于Active状态的时候,如果有电话进入,AM会调用pauseApp()。但是实际测试时,没有发现AM调用这个方法。 package net.csdn.blog.vincint; import javax.microedition.midlet.*; import javax.microedition.lcdui.*; /** * This is a simple test to help me understanding the Midlet state * * <p>Title: Midlet Test</p> * <p>Description: </p> * <p>Copyright: Copyright (c) 2005</p> * <p>Company: http://blog.csdn.net/Vincint</p> * @author Vincint * @version 1.0 */ public class MidletState extends MIDlet implements CommandListener { protected Form form; protected Command exitCmd; protected Command debugCmd; protected Display display; protected String debug; public MidletState() { addDebugInfo("In MidletState()"); display = Display.getDisplay(this); form = new Form("Hello world."); form.append("What a new world!"); exitCmd = new Command("Exit", Command.EXIT, 1); debugCmd = new Command("Debug", Command.SCREEN, 2); form.addCommand(exitCmd); form.addCommand(debugCmd); form.setCommandListener(this); } /** * startApp */ protected void startApp() { addDebugInfo("In startApp()"); display.setCurrent(form); } /** * pauseApp */ protected void pauseApp() { addDebugInfo("In pauseApp()"); } /** * destroyApp * * @param boolean0 boolean */ protected void destroyApp(boolean boolean0) { addDebugInfo("In destroyApp(" + boolean0 + ")"); } /** * commandAction * * @param command Command * @param displayable Displayable */ public void commandAction(Command command, Displayable displayable) { addDebugInfo("In commandAction(...)"); if (command == exitCmd) { destroyApp(true); notifyDestroyed(); } else if (command == debugCmd) { notifyUser(debug, form); } } protected String addDebugInfo(String debugMsg) { if (debug == null) { debug = new String(); } debug = debug.concat(debugMsg + "\n"); return debugMsg; } protected void notifyUser(String message, Displayable screen) { Alert alert = new Alert("Info", message, null, AlertType.INFO); alert.setTimeout(Alert.FOREVER); display.setCurrent(alert, screen); } } |
| [] [返回上一页] [打 印] |
文章评论 |
