免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1008 | 回复: 0
打印 上一主题 下一主题

★(转)J2ME学习笔记(五) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-03-21 15:31 |只看该作者 |倒序浏览

一开始谈事务处理肯定就以为各式各样不同的概念,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()处理。
   高级事务处理十分的简单,但是功能并不能真正的达到我们进行开发的需求。所以这个时候我们就要
借助于低级事务处理了。
   俺今天不想看了。。比较累,呵呵,所以低级事务处理明天晚上研究好了。



本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/5142/showart_16874.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP