Is this what you are trying to do?
final Handler mHandler = new Handler() {
public void handleMessage(Message msg) {
Log.i(TAG, "Received message. Checking if location still
null.");
if(location!=null){
Log.i(TAG, "Location not null. Dismissing dialog.");
dismissDialog(DIALOG1_KEY);
} else {
Log.i(TAG, "Location null. Sending delayed message to
check again
later.");
sendEmptyMessageDelayed(0, 100);
}
}
};
showDialog(DIALOG1_KEY);
mHandler.sendEmptyMessageDelayed(0, 100);
No new thread needed. That said, why not just have whatever sets the
location to not be null also trigger the dialog to be dismissed? If it
is on another thread it can send the Location in a message and have
the assignment and dismiss happen on the UI thread just as easily as
the above causes the check to happen on the UI thread.
Re Looper#prepare and Looper#loop, you would only need to call those
if you created a Handler on your new thread. You are creating the
Handler on the thread that was creating your new thread. If that
thread is the UI thread, it doesn't need the looper calls because it
already has a message queue running. Looper#loop doesn't cause your
own code to loop anyway, it causes the code that gives out messages to
handlers to loop.
On Nov 14, 5:22 am, adag <[email protected]> wrote:
> Hello,
>
> Here is my code:
> --------------------------------------
> final Handler mHandler = new Handler(){
> public void handleMessage(Message msg) {
> if(location!=null){
> Log.i(TAG, "got message from
> handler");
> dismissDialog(DIALOG1_KEY);
> //this.getLooper().quit();
> }
> }
> };
> showDialog(DIALOG1_KEY);
>
> new Thread(new Runnable() {
>
> public void run() {
>
> Looper.prepare();
> try {
>
> Thread.sleep(100);
> }
> catch (InterruptedException e) {
>
> // TODO Auto-generated catch block
>
> e.printStackTrace();
> }
>
> mHandler.sendEmptyMessage(0);
> Looper.loop();
> }//end of run
> }).start();
> --------------------------------
> The problem is as follows:
> progressBar is showing correctly. mHandler obtains the message but
> only once(for the first time). But I need to make it in loop(as
> Looper.loop should have worked in this case), so it calls mHandler
> handleMessage in every loop(but its not happening in this case).
> The outcome progressBar kept on rotating though the condition in the
> handleMessage (if(location!=null) )is getting satisfied in the mean
> time of the active progressbar.
> How can I make mHandle,sendEmptyMessage to call in each loop so I can
> check for this (if(location!=null)) condition.
>
> Any Suggestion would be very helpful
>
> ag
--
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