`
ming_fanglin
  • 浏览: 227106 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

j2me的UI回调机制

阅读更多
MIDP的Java Doc中,可以从javax.microedition.lcdui包的Overview里找到一段标题为“Event Handling”的内容,这段内容很有帮助,以下是对其中部分内容的翻译和理解。

用户交互会产生事件,虚拟机通过回调相应的方法将事件通知到应用程序。UI中的回调方法有以下几种:
(1) High-Level API中的抽象命令;
(2) Low-Level API中的按键和触屏事件(keyPressed、keyReleased等);
(3) Canvas中的paint()方法;
(4) 通过Canvas的callSerially()方法请求执行的Runnable接口;

所有的UI回调方法都是顺序执行的,它们永远都不会并行。虚拟机永远不会在一个回调方法返回前调用其他回调方法。这个特性可以很好的保证旧的事件在新事件被传递之前完成。如果多个回调都在等待执行,则后一个回调会在前一个回调返回后尽可能快的被执行。

前面的警告的原因已经很清楚了,如果commandAction()方法因被网络连接操作阻塞而无法返回,则其他回调方法都会因此阻塞。

实际开发中,回调方法应被保证尽可能快的返回,不在其中执行可能阻塞或需要大量运行时间的操作,这样才能保证事件处理的流畅度。

如下的方法都是UI中的回调方法:
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
Runnable.run resulting from a call to Display.callSerially
分享到:
评论
2 楼 batfree 2010-09-14  
Nokia网站上有完整的文档。
1 楼 ymmt 2010-09-13  
j2me doc(eclipse 中代码提示信息都为null了)在sun的网站上找了半天也没找到,最近学习j2me,觉得官方提供的文档太少了。

相关推荐

    J2ME里面的线程和网络

    7. **异步网络操作**:为避免阻塞主线程,J2ME鼓励使用回调或事件驱动的方式处理网络请求,如使用ProgressListener监听下载进度。 8. **网络安全**:J2ME支持SSL/TLS加密,以确保数据在网络中的安全传输。 在实际...

    J2ME手机应用项目开发实践 源代码

    8. **事件处理**:J2ME使用回调函数处理用户输入和其他事件,如键盘输入、屏幕触摸等。 9. **模拟器与设备测试**:开发者通常使用Sun Microsystems(现Oracle)提供的J2ME Wireless Toolkit (J2ME WTK) 或NetBeans ...

    J2ME开发的phonebook

    这涉及到注册事件监听器和实现相应的回调方法。 5. **数据结构与算法**:有效管理电话簿数据可能涉及到数据结构的选择,如使用ArrayList或Vector存储联系人信息,并用适当的搜索算法快速查找特定联系人。 6. **...

    旋转菜单 j2me CircleMenu

    这可以通过计时器和回调函数来实现。 4. **数据结构与逻辑**:为了存储和管理菜单项,可以使用数组或集合。菜单项可能包含图标、文本和关联的命令。当用户选择一个项时,触发相应的命令执行。 **具体实现步骤** 1...

    j2me开发的短信界面

    你需要为UI组件添加事件监听器,并实现相应的回调方法。 4. **数据存储**: 由于J2ME设备通常没有数据库,存储短信可能需要使用Record Management System (RMS)。RMS允许在设备上持久化数据,如短信记录和联系人信息...

    j2me java游戏贪吃蛇

    定时器会定期调用一个回调方法,更新蛇的位置并重新绘制屏幕。 5. **状态管理**:游戏有开始、暂停和结束等状态,需要一个状态机来管理这些状态的转换。 **代码实现** 1. **Snake类**:定义蛇的属性(如位置、...

    j2me实现mvc的框架源码

    5. **应用开发流程**: 使用该框架开发J2ME应用时,开发者需要了解如何初始化框架,创建Model,定义Controller回调,以及如何绑定View到Model以便实时更新。 6. **性能优化**: J2ME平台的内存和计算能力有限,因此...

    j2me笔试题题库(很经典的)

    开发者需要处理这些回调方法以确保应用程序的正确运行。 10. **J2ME的优化** 由于资源限制,J2ME应用需要特别关注性能优化,如减少内存消耗、降低CPU使用率、优化代码结构和大小等。 通过解答这些题库中的问题,...

    java源码:J2ME冒险游戏CASPER源代码.rar

    这些逻辑可能在单独的类中实现,通过消息传递或回调函数与UI层交互。 4. **资源管理**:由于J2ME设备资源有限,有效的资源管理至关重要。开发者可能使用了位图精灵(Sprites)来减少内存占用,同时对音频和图像资源...

    [OpenGL编程指南(第四版)].(Ebook.-.Pdf.-.Java).O'Reilly.-.j2Me.In.A.Nutshell.pdf

    MIDlet具有明确的生命周期,从初始化到终止,每个阶段都有相应的回调方法,帮助开发者控制应用的状态转换。 #### 3.5 开发MIDlets 这一部分详细介绍了如何开发MIDlets,包括项目设置、编码实践和调试技巧。 #### ...

    6.高级界面开发5表单元素事件.rar

    6. **事件回调**:一旦事件发生,对应的监听器方法将被回调。在这些回调方法中,开发者可以编写处理事件的代码,比如更新数据、显示提示信息或执行业务逻辑。 7. **事件的顺序**:在多元素的表单中,事件处理的顺序...

    75448181GPSj2me

    2. **监听位置更新**:使用`LocationListener`接口,当设备位置发生变化时,会触发监听器中的回调方法,提供新的位置信息。 3. **解析位置数据**:收到的位置对象包含纬度、经度、海拔、速度、时间和精度等信息。...

    HelloMIDlet.rar_in

    这些阶段由MIDlet Suite的管理器MIDletManager控制,开发者需要在MIDlet类中实现对应的回调方法。 6. **用户界面**: 在J2ME的MIDP中,用户界面通常使用Wireless Toolkit提供的 Lightweight User Interface ...

    netbean移动开发入门

    当用户执行特定操作(如点击按钮)时,监听器的回调方法会被调用。例如,可以使用`CommandListener`接口来处理按钮点击事件。 6. **导航和窗口管理**:在移动设备上,由于资源限制,一般不鼓励过多的窗口切换。因此...

    midp2.0接口文档(英文版)

    MIDlet类提供了对应的回调方法来处理这些状态转换。 9. **MIDlet套件(MIDlet Suite)**: MIDlet Suite是MIDP应用的打包形式,包含一个或多个MIDlet类以及相关的资源配置文件。JAD文件是元数据文件,描述了MIDlet...

    为Series 60 平台设计Java应用

    每个阶段都有相应的回调方法,开发者可以利用这些方法来管理应用状态和资源。例如,`startApp()`方法在应用启动时调用,`pauseApp()`在应用进入后台时调用,而`destroyApp(boolean unconditional)`则在应用完全关闭...

    java低级用户界面及事件处理.ppt

    通过`Timer`和`TimerTask`类,开发者可以设置间隔时间并定义一个回调方法,该方法将在每个定时器周期执行。 **6.5 综合实例:编写欢迎界面** 一个综合实例可能包括创建一个自定义的Canvas类,用以显示欢迎界面。这...

    关于JAVAME试卷的整理

    其中,`notifyDestroyed()`是一个回调方法,通知MIDlet对象已经被销毁。 5. **用户界面组件**:`Ticker`是一种特殊的UI组件,用于在屏幕顶部滚动显示简短消息。虽然`Ticker`默认只能在`Form`对象上方滚动显示,但其...

    基于网络的MIDlets简介

    这部分代码定义了一个监听器接口,用于处理HTTP请求后的回调事件。 ```java public interface HttpPosterListener { void onPostComplete(String result); } ``` ##### 4.6 Sum.jad 这是MIDlet的描述文件,包含...

    新版Android开发教程.rar

    ----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 2 开放手机联盟 --Open --Open --Open --Open Handset Handset Handset Handset Alliance ...

Global site tag (gtag.js) - Google Analytics