J2ME开发经验点滴

来源:互联网 发布:五子棋软件排名 编辑:程序博客网 时间:2024/05/05 10:13

想实现一个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处阻塞的话,系统线程就出不来了

原创粉丝点击