不要漏掉书中任何一个练习题——请全部做完并记录下解题思路。
首页 arrow 开发技术 arrow 程序设计 arrow J2ME中的事件处理

J2ME中的事件处理 输出PDF 打印 E-mail
Author Author: 一滴蔚蓝色 | Date Date: 2008-01-13 | View Count View: 936 | section & Category 开发技术 -  程序设计

译者:Rocks

译者按:下面翻译自MIDP2.0 API文档,希望有助于大家理解MIDlet的运行机制。

用户的交互产生事件,然后MIDP实现把这些事件采用对应的回调方法来通知应用程序。有四大类UI回调方法:

* 抽象的命令,这是高层界面API的一部分
* 单个按键按下和释放的底层事件(如果触摸点设备可用的话,那么还包括触摸点事件)
* 回调Canvas类的paint()方法
* 由Display类的callSerially()方法引发的,对Runnable.run()方法的回调

所 有的UI回调方法都是序列化的,所以它们绝不会并行发生。也就是,任何MIDP实现都不能在前一个回调未返回的情况下调用另外一个回调。这个性质确保了当 一个事件发出的时候,它的前一个事件肯定已经处理完成。如果有多个未处理的UI回调,那么只要前一个UI回调返回了,下一个就会紧接着被调用。MIDP实 现同时也要保证,使用callSerially()方法引发的run()方法要在所有未处理的repaint请求都得到满足之后才被调用。

但 在回调的序列规则中有一个特例,就是当Canvas.serviceRepaint()方法被调用的时候。这个方法导致Canvas.paint()方法 被立即调用,并会等待直到该方法运行结束。即使serviceRepaint的调用者本身就在一个回调中也一样。以后会对这个问题进一步讨论。

下面这些回调方法都是序列化执行的:

Canvas.hideNotify
Canvas.keyPressed
Canvas.keyRepeated
Canvas.keyReleased
Canvas.paint
Canvas.pointerDragged
Canvas.pointerPressed
Canvas.pointerReleased
Canvas.showNotify
Canvas.sizeChanged
CommandListener.commandAction
CustomItem.getMinContentHeight
CustomItem.getMinContentWidth
CustomItem.getPrefContentHeight
CustomItem.getPrefContentWidth
CustomItem.hideNotify
CustomItem.keyPressed
CustomItem.keyRepeated
CustomItem.keyReleased
CustomItem.paint
CustomItem.pointerDragged
CustomItem.pointerPressed
CustomItem.pointerReleased
CustomItem.showNotify
CustomItem.sizeChanged
CustomItem.traverse
CustomItem.traverseOut
Displayable.sizeChanged
ItemCommandListener.commandAction
ItemStateListener.itemStateChanged
由Display.callSerially引发的Runnable.run

记 住定时器(Timer)事件并非UI事件,定时器的回调方法是可以和UI事件回调方法同时调用的,不过同一个Timer对象中的多个TimerTask则 是序列化调用的。如果应用程序使用了定时器,那么当定时器事件回调和UI事件回调同时发生时,应用程序必须自己确保其数据结构的安全。应用程序也可以选择 使用Display.callSerially()方法来把定时器事件序列化到UI事件队列中去以避免同步问题。

收藏到您的网摘: Google书签 Yahoo书签 雅虎收藏夹 365Key网摘 新浪ViVi 百度收藏 天极网摘 diglog 和讯网摘 POCO网摘 YouNote网摘 博拉网 天下图摘 spurl blogmarks BlinkList reddit digg Del.icio.us

本文关键字本文关键字: J2ME  事件  处理  

阅读数: 937 | 打印 | E-mail

  我要评论
RSS评论

发表评论

姓名:
E-mail
您的网站/主页
标题:
评论:

验证码:* Code
若有人评论本文,请E-mail通知我。

最近更新 ( 2008-01-13 )
(J2ME游戏程序开发实例精讲详解) < 上一篇   下一篇 > (J2ME键盘响应祥解及处理方法)