Why not use Thread.wait() and Thread.notify() to communicate with the
working thread.
Or perhaps message passing to tell the worker thread to wait until
further notice.
here's how I would do it, though I'm not sure about wait() and
notify() since I never use them myself. But I *think* it would go
something like this:
/*worker thread class*/
class MyThread extends Thread
{
Handler mHandler;
public static final int DONE_MSG = 123;
MyThread(Handler pHandler)
{
mHandler = pHandler;
}
@Override run()
{
//do something.....
Bundle bundle = new Bundle();
bundle.putInt("TYPE", DONE_MSG);
Message msg = new Message();
msg.setData(bundle);
mHandler.sendMessage(msg);
}
/*activity class*/
private Handler message_handler = new Handler()
{
Bundle bundle = msg.getData();
int type = bundle.getInt("TYPE");
if ( type == MyThread.DONE_MSG )
{
//dismiss the dialog...
tThread.notify();
}
}
tThread = new MyThread(message_handler);
tThread.start();
//then from your onClick handler....
//show the dialog....
tThread.wait();
On Wed, Dec 30, 2009 at 11:49 PM, swapnil kamble <[email protected]> wrote:
> Let me reframe my question. My intention is not to block UI thread but to
> block a thread when AlertDialog is shown till the user provides confirmation
> response.
>
> I have handshake process, where I have to provide an option to user whether
> to accept/reject and based on that user response I want to return a boolean
> value. And unless this response is not provided next line should not get
> executed, just exactly what Windows MessageBox does.
>
> Now there are two option to start this handshake process, one either from UI
> thread i.e. starting from some onclick event listener. But I can't use this
> way, because I want to block thread until response is not provided(modal
> dialog). Blocking this thread means blocking whole app. So this way i can't
> do this.
>
> Second option is to spawn a new worker thread and then run handshaking from
> it, we don't mind blocking non-ui thread. But again problem here is that I
> can't show AlertDialog from non UI thread.
>
> I know there is an option to post message and display AlertDialog from that
> Handler, but then in that case my thread continues and completes its
> execution even if user response is not provided which I don't want.
>
> On Wed, Dec 30, 2009 at 1:16 PM, Romain Guy <[email protected]> wrote:
>>
>> If you block the UI thread, the dialog won't work. The user won't be
>> able to click it, and it might not even draw at all. So a very bad
>> idea :)
>>
>> On Tue, Dec 29, 2009 at 10:33 PM, Frank Weiss <[email protected]> wrote:
>> > Just like Treking, I'm puzzled by Swapnil's desire to block the UI
>> > thread.
>> > Perhaps if he explained what he does not want the UI thread doing while
>> > the
>> > dialog is displayed, would shed light on the issue for all.
>> >
>> > On Dec 29, 2009 9:59 PM, "TreKing" <[email protected]> wrote:
>> >
>> >> I can put my code in listeners but still I dont want that thread to
>> >> continue its execution
>> >
>> > Which thread? The UI thread? I'm pretty sure you DO want the UI thread
>> > to
>> > continue it's execution. Why would you NOT?
>> > What are you trying to accomplish? I can't think of why you would want
>> > this
>> > behavior...
>> >
>> >
>> > -------------------------------------------------------------------------------------------------
>> > ...
>> >
>> > On Wed, Dec 30, 2009 at 12:27 AM, swapnil kamble <[email protected]>
>> > wrote: > > Thanks for your ...
>> >
>> > --
>> >
>> > You received this message because you are subscribed to the Google
>> > Groups
>> > "Android Developers" group...
>> >
>> > --
>> > You received this message because you are subscribed to the Google
>> > Groups "Android Developers" group.
>> > To post to this group, send email to [email protected]
>> > To unsubscribe from this group, send email to
>> > [email protected]
>> > For more options, visit this group at
>> > http://groups.google.com/group/android-developers?hl=en
>>
>>
>>
>> --
>> Romain Guy
>> Android framework engineer
>> [email protected]
>>
>> Note: please don't send private questions to me, as I don't have time
>> to provide private support. All such questions should be posted on
>> public forums, where I and others can see and answer them
>>
>> --
>> You received this message because you are subscribed to the Google
>> Groups "Android Developers" group.
>> To post to this group, send email to [email protected]
>> To unsubscribe from this group, send email to
>> [email protected]
>> For more options, visit this group at
>> http://groups.google.com/group/android-developers?hl=en
>
>
> --
> ...Swapnil
>
> || Hare Krishna Hare Krishna Krishna Krishna Hare Hare ||
> || Hare Rama Hare Rama Rama Rama Hare Hare ||
>
> --
> You received this message because you are subscribed to the Google
> Groups "Android Developers" group.
> To post to this group, send email to [email protected]
> To unsubscribe from this group, send email to
> [email protected]
> For more options, visit this group at
> http://groups.google.com/group/android-developers?hl=en
--
The Revolting X Software/Music Production:
http://diastrofunk.com
--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en