LWUIT Deadlock (lwuit dialog VS System dialog)

Posted by Ramps on Stack Overflow See other posts from Stack Overflow or by Ramps
Published on 2010-04-26T15:51:36Z Indexed on 2010/04/26 15:53 UTC
Read the original article Hit count: 478

Filed under:
|
|

Hi,
I have a deadlock problem when I try to make some I/O operations that needs user permission. When user click the button I start a new thread which is responsible for performing IO operations, and I display lwuit "please wait" dialog. Dialog is dismissed by IO thread from callback method. Problem is that, when system dialog appears (asking for user permission ) on top of lwuit dialog - deadlock occurs. I assume that this is because dialog.show() method blocks main thread (EDT), so it's impossible to dismiss system dialog, when lwuit dialog is behind it. Anyone managed to solve this problem?

Here is the simplified code, hope it is clear enough:


protected void actionPerformed(ActionEvent evt, int id) {
 switch (id) {
  case ID_FRIEND:
    MyRunnableWithIoOperation r = new MyRunnableWithIoOperation(this);
    new Thread(r).start(); //run the thread performing IO operations
    Command cmd = mWaitDialog.showDialog();  // show the "please wait" dialog
    ...//handle cancel
  }//end switch  
 }

 /* method called from MyRunnableWithIoOperation, when operation finished*/
 public void myCallbackMethod(){
    mWaitDialog.dispose(); //
 }

I tried to start my IO thread by calling Display.getInstance().invokeAndBlock( r ), but with no luck. In such case, my "wait dialog" doesn't show up.

© Stack Overflow or respective owner

Related posts about lwuit

Related posts about j2me