Thursday, May 17, 2012

[android-developers] Re: AsyncTask in Android 4.0



On Friday, April 20, 2012 3:16:35 PM UTC-4, Nathan wrote:
Still adjusting to the changes in Android 4.0 regarding AsyncTask.

If I understand right, the default behavior of execute is changing to one single thread pool with only one thread? With the reason cited that programmers are not capable of handling a bigger threadpool (I'm paraphrasing).

 
I'm also trying to figuring out why setDefaultExecutor is hide but public?

    /** @hide */
    public static void setDefaultExecutor(Executor exec) {
        sDefaultExecutor = exec;
    }

Is this because it is subject to change and non-framework clients (i.e. third party dev) should be use this? For my app I wanted to globally change the Executor to ThreadPool, but that doesn't seem possible. 

So what I'm currently doing is subclass the AsyncTask like so:

public abstract class ThreadPoolAsyncTask<Params, Progress, Result> extends AsyncTask<Params, Progress, Result> {

/*

* This is a helper method to allow ICS AsyncTask to run in a thread pool, 

* without break API compatability with pre-ICS devices.

* If you don't want a threadpool use the default AsyncTask since that is the 

* default for ICS.  If you don't want a threadpool for pre-ICS (API level < 13) 

* then you need to wrote your own AsyncTask. Use the AsyncTask.java as a good starting point.

*/

public void executeOnThreadPool(Params...params) {

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {

this.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, params);

} else {

this.execute(params);

}

}

}


I'm just wondering is this is a good solution?  This way I can use ThreadPoolAsyncTask for task that can run in parallel and don't have any implicit dependence on other tasks. And use AsyncTask directly if i want them to run in serial.

Thanks,

--
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+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

0 Comments:

Post a Comment

Subscribe to Post Comments [Atom]

<< Home


Real Estate