十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
这期内容当中小编将会给大家带来有关J2ME中怎么实现对话框选择功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
主要从事网页设计、PC网站建设(电脑版网站建设)、wap网站建设(手机版网站建设)、成都响应式网站建设、程序开发、微网站、小程序设计等,凭借多年来在互联网的打拼,我们在互联网网站建设行业积累了丰富的网站建设、成都做网站、网络营销经验,集策划、开发、设计、营销、管理等多方位专业化运作于一体,具备承接不同规模与类型的建设项目的能力。
J2ME实现对话框选择功能
在手机这么小的屏幕上开发使用,难点之一就是频繁的屏幕切换。尽管midp2.0的UI部分已经很丰富了,但这些UI部件都是基于事件回调的。这在处理大量的、基本的问答式交互时显得力不从心。
本文实现了一个阻塞当前线程的对话框,简要地说,你可以运用诸如win32API中dialog函数那样的方式来实现对话框并阻塞等待返回值,然后根据返回值执行不同的处理。
疑问何在?
首先回顾一下midpUI的事件处理机制。有两个要素:
1)首先UI部分由系统的一个线程负责维护。也就是说不能阻塞系统的事件处理要领。
2)事件处理运用的是一种回调机制。首先UI部件运用诸如setCommandListener之类的要领为自己注册一个回调接口(其中的回调要领由用户实现);等到触发了相应事件就调用这个注册好的接口的回调要领。
以下是一个实现了CommandListener的类的代码片断:
Formf=newForm("Helloworld"); f.addCommand(exit); f.setCommandListener(this);
可以想象基于事件回调的处理方式,在处理大量的、基本的问答式交互时显得力不从心。你不得不为每一个仅仅是询问要不要继续的对话框而实现一个又一个类,或者处理一个复杂的回调函数。如果选择后者,那么在一个又一个的if-else中处理不同逻辑事件的代码片断一定会烦死你。
较好的做法
这时候我们不免怀念一下win32Api中对话框函数的处理方式:
intchoose=Dialog(title,type……); if(choose==OK){……} elseif(choose==Cancel){……}
这样处理将会阻塞当前线程,等待返回值,然后根据返回值执行处理。这样做很cool的原由就是在一个逻辑性很完整的任务中,你可以一次性在一个回调要领中完成所有逻辑,而不必为了问询基本的YES/NO疑问而在不同的类中间跳来跳去。
如何在MIDP下实现
我们遇到的***个疑问来自于我们的要领必须要阻塞当前线程等待返回值。也就是说,这个对话框不能在UI的回调中直接运行,比如commandAction中。处理办法是将所有的事件处理都放到一个线程类中处理。(这是一点额外的负担,但不可防止)。还好这个工作量不大,要想实现两个对象之间的通信也不难。
第二个疑问是如何阻塞当前的线程,我们祭出Java线程的三板斧之wait()/notifyAll()。我们可以指定一个信号量(初值false),当其为false时阻塞当前线程,在得到用户通知后将信号量改为true,并唤醒线程。
下面看一下主要思路
上述就是小编为大家分享的J2ME中怎么实现对话框选择功能了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注创新互联行业资讯频道。