Hey Kostya can async task be the reason i can not properly play my
application in 2.1 while it works fine in 2.2??

On Wed, Feb 2, 2011 at 4:54 PM, Kostya Vasilyev <kmans...@gmail.com> wrote:

> Adam,
>
> interrupt() doesn't necessarily stop a thread right then and there. It sets
> an internal flag, which can be checked with isInterrupted(). If your thread
> happens to call wait() or sleep(), then this flag will be turned into an
> InterruptedException. Also this flag is reset after isInterrupted() returns
> true.
>
> Given this, it might be better to implement your own flag that tells the
> thread that it should stop what it's doing and exit.
>
> However, if the thread is inside a network call, it might not see the flag
> for a while. So one other fix is needed - add code to your thread (such as
> setting the handler to null) that tells it that the UI has gone away, and
> that it shouldn't try to update it.
>
> You could also use AsyncTask rather than rolling your own thread, which has
> a method to cancel. Note however that prior to 2.2., this method has a race
> condition, and may occasionally not work properly.
>
> -- Kostya
>
> 02.02.2011 14:07, Serdel пишет:
>
>  In my application I am connecting to a server and downloading some
>> things. Not much but the connection it self takes a while. Off course
>> this is done in a thread (class that implements runnable). If some
>> error occurs, the thread sends a message to the UI using a Handler and
>> the UI displays an dialog window.
>>
>> My problem is that I can't stop the thread in the UI properly. For
>> example if during the connection I would press the 'home' button on
>> the phone, after some seconds I get an error saying that my
>> application couldn't create a dialog window (because it is not running
>> anymore). That means that my thread was not stopped and kept on
>> working until an error (i.e. timeout) occurred and tried to send a
>> massege to the UI by a handler.
>>
>> to Stop the thread I have a function that I found:
>>
>>                  public synchronized Thread stopThread(Thread thr){
>>                          if(thr != null){
>>                            Thread temp = thr;
>>                          thr = null;
>>                            temp.interrupt();
>>                          }
>>                          return thr;
>>                        }
>>
>> And I use it like:
>>
>> @Override
>>         public void onDestroy()
>>            {
>>                super.onDestroy();
>>               senderTh= stopThread(senderTh);
>>               finish();
>>            }
>>
>> Why this doesn't stop my Thread? How can I do it from the UI?
>>
>>
>
> --
> Kostya Vasilyev -- WiFi Manager + pretty widget --
> http://kmansoft.wordpress.com
>
>
> --
> 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<android-developers%2bunsubscr...@googlegroups.com>
> For more options, visit this group at
> http://groups.google.com/group/android-developers?hl=en
>

-- 
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