想实现一个UI,提示用户输入PIN码,输入完后函数返回用户输入的PIN码。代码如下:
public class PinInputForm
extends Form
implements CommandListener
{
......
public String GetInputPIN(Display display)
{
//show dialog
Displayable prevUi= display.getCurrent();
display.setCurrent(this);
//wait for "ok"
synchronized(this){
try{
wait();
}catch(Exception e){}
}
display.setCurrent(prevUi);
return m_strRet;
}
public void commandAction(Command c, Displayable s)
{
if(c==m_CancelCommand)
{
m_strRet=null;
synchronized(this){
notify();
}
}
else if(c==m_OkCommand)
{
m_strRet= m_txtBoxPIN.getString();
synchronized(this){
notify();
}
}
}
}
这在Windows下很好实现,只要一个模式对话框就可以。但发现在J2ME环境下,竟然无法实现。原因是:J2ME为Midlet提供一个UI线程,且仅有一个。如果用户在该线程下阻塞,Midlet就得不到再次调度
系统原理如下:
经过调用Connet后:
如果在connet处阻塞的话,系统线程就出不来了
来源:http://www.j2mehome.com/ j2me教程 CLDC