站内搜索:
网站首页化境产品软件资讯手机开发应用开发手机软件下载源代码下载编程工具开发资料博客
方式:
关键字:
 
  相关内容
  · 解决Java程序在MOTO E680i中声音文件播放
· J2ME中的事件处理
· 保护您的 J2ME/MIDP 应用程序
 
当前位置: 化境编程网 >> J2ME
J2ME中的事件处理
[时间: 2006-5-15 1:30:27 作者: ]

来源:


译者:Rocks
译者按:下面翻译自MIDP2.0 API文档,希望有助于大家理解MIDlet的运行机制。
JAVA手机网[www.cnjm.net]


用户的交互产生事件,然后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
JAVA手机网[www.cnjm.net]
CustomItem.getPrefContentHeight
CustomItem.getPrefContentWidth
JAVA手机网[www.cnjm.net]
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
JAVA手机网[www.cnjm.net]
ItemCommandListener.commandAction
ItemStateListener.itemStateChanged
由Display.callSerially引发的Runnable.run

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

 
| 关于我们 | 联系方法 | 网络广告 | 解决方案 | 产品服务 |

©Copyright by 中晟科技 2003 - 2006