程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> J2ME >> J2ME學習筆記(五)

J2ME學習筆記(五)

編輯:J2ME
一開始談事務處理肯定就以為各式各樣不同的概念,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()處理。

高級事務處理十分的簡單,但是功能並不能真正的達到我們進行開發的需求。所以這個時候我們就要

借助於低級事務處理了。

俺今天不想看了。。比較累,呵呵,所以低級事務處理明天晚上研究好了。


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved