J2ME 技术的学习与实践者

[导入]OpenBaseMovil事件处理: 事件对象


网站: JavaEye  作者: iwinyeah  链接:http://iwinyeah.javaeye.com/blog/167071  发表时间: 2008年03月03日

声明:本文系JavaEye网站发布的原创博客文章,未经作者书面许可,严禁任何网站转载本文,否则必将追究法律责任!

Event事件对象: 有如下属性:
protected Integer type; // 事件类型,预定义了全局事件,改变语言事件和进度事件
protected boolean consumed; // 事件是否已被处理
protected Hashtable attachments; // 以哈希表表示的与事件相关的对象附件

通过在静态事件对象预先登记多个各种类型的事件监听器,当有事件发生时,就可通过殂态事件对象将事件发送给事件监听器进行处理.事件监听器收到事件后,可根据事件类型和附件作出响应,如果不想在它之后登记的监听器再处理该事件,则将consumed设置为true.

代码如下:
public static void dispatch( final Event event )
{
// 以下还未明白什么意义
// 如果是进度事件并且当前的线程已在后台任务中登记则不处理?
if(
!event.type.equals( PROGRESS ) ||
!backgroundTasks.contains( Thread.currentThread() )
)
{
final Vector v = (Vector) listeners.get( event.type );
if( v != null )
{
final int count = v.size();
for( int i = 0; i < count && !event.consumed; i++ )
{
final EventListener listener = (EventListener) v.elementAt( i );
listener.handleEvent( event );
Thread.yield();
}
event.consumed = false;
}
}
}
本文的讨论也很精彩,浏览讨论>>


JavaEye推荐




文章来源:http://iwinyeah.javaeye.com/blog/167071

posted on 2008-03-03 21:07 iwinyeah 阅读(56) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航: