LWUIT Deadlock (lwuit dialog VS System dialog)
- by Ramps
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.