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

J2ME中的事件處理

編輯:J2ME
譯者按:下面翻譯自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事件隊列中往以避免同步標題。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved