>>Also, since Donut, the limit of enqueued tasks in AsyncTask is 128, not 20. So AsyncTask has a maximum of 10 threads running concurrently
====so what is the solution for Android 1.5 -- Best Regards, Atif Gulzar I ◘◘◘◘ Unicode, ɹɐzlnƃ ɟıʇɐ On Wed, Nov 11, 2009 at 9:25 PM, 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<android-developers%2bunsubscr...@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<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