You don't need to do anything complicated - use Handler.postDelayed
(Runnable r, long delayMS) like Stoyan mentioned.

Be sure to keep a reference to your Runnable r so you can call
removeCallbacks(r) like Romain mentioned when your activity is pre-
empted before the posted Runnable executes.  This is also helpful in
that you can re-use r if you need to.  Nice and simple.


On Feb 18, 3:30 am, Stoyan Damov <stoyan.da...@gmail.com> wrote:
> ...or take care of threading properly - instead of Thread.sleep, use a
> monitor and wait on it with a timeout. Here's the pseudo code
> (catching InterruptedException omitted):
>
> // in your main thread
>
> // when you launch the secondary thread make sure it's running before
> you do anything else
> synchronized (secondaryThreadRunning)
> {
>     secondaryThread = new ...
>     secondaryThread.start();
>     secondaryThreadRunning.wait();
>
> }
>
> // before you exit the app (e.g. onStop)
> synchronized (secondaryThreadStopMonitor)
> {
>     secondaryThreadShouldStop = true;
>     secondaryThreadStopMonitor.notify();
>     secondaryThread.join(); // wait for it to finish
>
> }
>
> // 1st line in the secondary thread's run()
> // signal main thread we're up and running
> synchronized (secondaryThreadRunning)
> {
>     secondaryThreadRunning.notify();
>
> }
>
> // in the secondary thread where you want to wait and then post
> synchronized (secondaryThreadStopMonitor)
> {
>     secondaryThreadStopMonitor.wait(your timeout);
>     if (secondaryThreadShouldStop)
>     {
>         // break the loop (if you have one) and exit the thread (i.e.
> let it return from run())
>     }
>     else
>     {
>        // timed out, post to your handler [1]
>     }
>
> }
>
> [1] You might get a spurious wake here, so it's best to track the
> elapsed time manually
>
> In any case, make sure you're not doing too much work, it seems that
> you can simply use:
>
> Handler.postDelayed(Runnable r, long delayMillis) and in your handler
> do it again
>
> Cheers,
> Stoyan
>
>
>
> On Wed, Feb 18, 2009 at 7:48 AM, Romain Guy <romain...@google.com> wrote:
>
> > In your application's onPause/onStop/onDestroy simply use
> > Handle.removeCallbacks(Runnable).
>
> > On Tue, Feb 17, 2009 at 9:46 PM, Dilli <dilliraomca...@gmail.com> wrote:
>
> >> Hi all,
>
> >> I am developing a simple application with thread concept
>
> >> problem:
>
> >>  In one thread i write
>
> >>         {
> >>           Thread.sleep(10000)  //10 sec sleep
> >>           m_handler.post(my_runnable);  // to post to run another
> >> runnable
> >>         }
>
> >>  before  the thread wake up ( <10 sec)  i stopped my application
> >> exiting my application
>
> >>  but the thread sleeped not killed and it wakes up after 10 sec and
> >> try to post message
> >>  and it causes exception.
>
> >>  is there any way to kill the threads those are in sleep mode while
> >> exiting the application ??
>
> >>  and prevent to post using m_handler.
>
> >>  Need suggetions
>
> >> Thank You..
>
> >> Dilli.
>
> > --
> > Romain Guy
> > Android framework engineer
> > romain...@android.com
>
> > 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- Hide quoted text 
> > -
>
> - Show quoted text -
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers-unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to