It comes from the use of a thread pool. It's as meant to be :)

On Wed, Nov 11, 2009 at 11:44 AM, dadical <keyes...@gmail.com> wrote:
> One strange thing that I've seen in my usage of AsycTask is that the
> Thread associated with an AsyncTask seems to live on after the task
> has completed.   It appears to be in some kind of idle/finalized
> state, but the resources associated with the Thread itself remain
> visible in the debugger.  As far as I can tell, the task has completed
> and exited normally.  Subsequent invocations of the task seem to
> create a new thread in the process.
>
> Is this some kind of optimization?  A leak?  A misuse of AsyncTask?
> I've never spent a huge amount of time on figuring it out, as the use
> case for me was fairly fringe, but I've wondered about it...
>
> On Nov 11, 11:25 am, Romain Guy <romain...@google.com> wrote:
>> Please consider the implications of this: does it even make sense to
>> have 20+ threads (on a single CPU device) updating the UI at once?
>> That is NOT the purpose of AsyncTask. Also, since Donut, the limit of
>> enqueued tasks in AsyncTask is 128, not 20. So AsyncTask has a maximum
>> of 10 threads running concurrently and can hold up to 128 tasks
>> waiting for a thread to be freed in the pool. So basically AsyncTask
>> does exactly what you are trying to do here.
>>
>>
>>
>>
>>
>> On Wed, Nov 11, 2009 at 1:02 AM, Atif Gulzar <atif.gul...@gmail.com> wrote:
>> > Android has a limit to rum at MAX 20 concurrent AsyncTask. To handle this
>> > limit I created a AsyncTaskPool.java utility. Its not a pool in true sense
>> > but a kind of scheduler. I am posting it here for your comments and it may
>> > help others.
>>
>> > import java.util.ArrayList;
>>
>> > import android.os.AsyncTask;
>>
>> > public class AsyncTaskPool
>> > {
>>
>> >     private int poolSize;
>> >     private ArrayList<AsyncTask> currentTasks = new ArrayList<AsyncTask>();
>> >     private ArrayList<Object> pendingTasks = new ArrayList<Object>();
>>
>> >     /**
>> >      * @param poolSize
>> >      *            : it should be less than 20. As Android only supports 
>> > max.
>> > 20 concurrent Asynch tasks.
>> >      */
>> >     public AsyncTaskPool(int poolSize)
>> >     {
>> >     this.poolSize = poolSize;
>> >     }
>>
>> >     public int getPoolSize()
>> >     {
>> >         return poolSize;
>> >     }
>>
>> >     public boolean addTask(AsyncTask asyncTask, Object... params)
>> >     {
>>
>> >     if (currentTasks.size() < poolSize)
>> >     {
>> >         currentTasks.add(asyncTask);
>> >         if (params != null)
>> >         asyncTask.execute(params);
>> >         else
>> >         asyncTask.execute();
>> >     }
>> >     else
>> >     {
>> >         Object[] task = new Object[2];
>> >         task[0] = asyncTask;
>> >         task[1] = params;
>>
>> >         pendingTasks.add(task);
>> >     }
>>
>> >     return true;
>> >     }
>>
>> >     public boolean removeTask(AsyncTask task)
>> >     {
>> >     if(currentTasks.contains(task))
>> >     {
>> >         currentTasks.remove(task);
>> >         return true;
>> >     }
>> >     return false;
>> >     }
>>
>> >     //Add this method in the onPostExecute method of AsyncTask
>> >     public boolean removeAndExecuteNext(AsyncTask atask)
>> >     {
>> >     removeTask(atask);
>> >     if (pendingTasks.size()>0 && currentTasks.size()<poolSize)
>> >     {
>> >         Object [] task = (Object []) pendingTasks.get(0);
>> >         pendingTasks.remove(task);
>>
>> >         addTask((AsyncTask)task[0], (Object[])task[1]);
>>
>> >     }
>>
>> >     return false;
>> >     }
>>
>> > }
>>
>> > --
>> > Best Regards,
>> > Atif Gulzar
>>
>> > I ◘◘◘◘ Unicode, ɹɐzlnƃ ɟıʇɐ
>>
>> > --
>> > 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
>>
>> --
>> 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
>



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

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