一开始谈事务处理肯定就以为各式各样不同的概念,java基类的继承等东西。所以感觉很是枯燥。以 
前学java的时候一谈事务处理我就头痛。呵呵。     呵呵,开始研究一下MIDlet的事务处理咯。其实以前也没有写过Applet,但是Servlet倒是写得多, 
毕竟MVC里面servlet所占地位也算重要。任何一个servlet都必须要继承javax.servlet.http.HttpServle 
t类,其实作为一个MIDlet而言也是一个概念,所有的MIDlet都必须继承javax.microedition.midlet.MID 
let。说白了也就是继承了startApp(),pauseApp(),destoryApp()这三个方法。     当一个MIDlet成功开始运行的以后也就开始了它的生命周期,这个生命周期完全有JPM控制。MIDlet 
状态转变发生意外的时候便会抛出MIDletStateChangeException。     整个MIDP规格中,事务处理分为高级事务处理以及低级事务处理。低级事务处理根据不同的手持设备 
会有不同的类库支持,而高级事务处理则无此限制。也就是说,如果我们做的MIDlet想要在不同的机器上 
都能运行我们就不能调用低级事务处理中的方法,而只能使用高级事务处理中的方法。     整个MIDP中,事务处理是由 事务<->处理方法 的一个组合形成的。      MIDP所有具有显示能力的元件都继承于Displayable抽象类,它又衍生出了Screen(处理高级事务处 
理)与Canvas(处理低级事务处理)。MIDP中高级事务处理有两个接口,分别是CommandListener以及Ite 
mStateListener。CommandListener接口经常与javax.microedition.lcdui中的Command类一起使用。可以 
看如下例子: /**  * @author You Li  *  * CopyRight (C) 2005   */ import javax.microedition.midlet.*; import javax.microedition.lcdui.*; 
public class HLEventMIDlet extends MIDlet implements CommandListener{  private Command exitCommand;  private Command info1Command;  private Command info2Command;  private Display display;  public HLEventMIDlet(){   display = Display.getDisplay(this);   exitCommand = new Command("退出", Command.SCREEN,1);//后面数字越小,优先级别 
越高   info1Command = new Command("菜单1", Command.SCREEN,2);   info2Command = new Command("菜单2", Command.SCREEN,2);  }  public void startApp(){   TextBox t = new TextBox("Hello", "测试一下^_^",256, 0);   t.setCommandListener(this);   t.addCommand(exitCommand);   t.addCommand(info2Command);   t.addCommand(info1Command);   display.setCurrent(t);  }  public void pauseApp(){  }  public void destroyApp(boolean unconditional){  }  public void commandAction(Command c, Displayable s)  {   if (c == exitCommand)  {    notifyDestroyed();   }else if (c == info1Command){    notifyDestroyed();   }  } }     运行以后就会发现已经有了一个可以供选择的一个简单菜单了!^_^Command一共定义了8个命令,优 
先级别如下从高到低:Command.BACK   Command.CANCEL  Command.EXIT  Command.HELP  Command.ITEM  Command.OK  Command.SCREEN   
Command.STOP 。呵呵,我觉得这么说都没有什么用,写一点点代码就都清楚了。。^_^ 
   CommandListener采用了Unicast模式,所以同一时间那只能相应一个事务处理方法。 
   然后欣赏哈子ItemStateListener接口好了。同CommadnListener一样,它也采用了Unicast模式。    搞个列子先: /**  * @author You Li  *  * CopyRight (C) 2005   */ import javax.microedition.midlet.*; import javax.microedition.lcdui.*; 
public class TFEventMIDlet extends MIDlet implements ItemStateListener { 
 /**   *    */  private Display display;  public TFEventMIDlet(){   display = Display.getDisplay(this);  }  public void startApp()  {   Form f = new Form("Form") ;   TextField tf = new   TextField("Input","Origin",25,TextField.ANY) ;   f.append(tf) ;   f.setItemStateListener(this) ;   display.setCurrent(f) ;  }  public void pauseApp(){  }  public void destroyApp(boolean unconditional){  }  public void itemStateChanged(Item item){   TextField tmp = (TextField) item ;   tmp.setString("Changed") ;  } 
}    关于这两个接口的具体使用方法我想也没有必须都写出来,根据接口所需要继承下来的类一看我想也 
都差不多了。。呵呵,命名还是很规范的。 
    
根据MIDP的规范,如果CommandListener和ItemStateListener同时处理,itemStateChanged()优先于comm 
andAction()处理。 
   高级事务处理十分的简单,但是功能并不能真正的达到我们进行开发的需求。所以这个时候我们就要 
借助于低级事务处理了。 
   俺今天不想看了。。比较累,呵呵,所以低级事务处理明天晚上研究好了。  
 
  |