可日,无法贴图,文字表述下:
“进入事件循环,先处理系统事件(如按键,hideNotify, showNotify ,etc),接着处理需要即时响应的task(如setCurrent带来的paint动作),然后处理可以延时处理的task(如paint的一般调用) ,判断是否还有待决事件,否则阻塞等待,是的话则进入下一轮消息循环”
/**
* Implementation of the event dispatch loop content
*/
public void edtLoopImpl() {
long currentTime = System.currentTimeMillis();
while (sInputEvents.size() > 0) {
int[] i = (int[]) sInputEvents.elementAt(0);
sInputEvents.removeElementAt(0);
handleEvent(i);
}
sEdtGraphics = sScreen.getGraphics();
sScreen.paintDirtyRegion();
// check key repeat events
long t = System.currentTimeMillis();
if (sKeyRepeatCharged && sNextKeyRepeatEvent <= t) {
sScreen.getCurrent().keyRepeated(sKeyRepeatValue);
sNextKeyRepeatEvent = t + sKeyRepeatNextIntervalTime;
}
if (sLongPressCharged && sLongPressInterval <= t - sLongKeyPressTime) {
sLongPressCharged = false;
sScreen.getCurrent().longKeyPress(sKeyRepeatValue);
}
processSerialCalls();
}