需要知道的重点:
1. 在1.6之前,所有的AsyncTask在一个单独的线程中有序的执行。
2. 从1.6到2.3,这些AsyncTask在一个线程池中执行,但是有上限。
3. 从3.0开始,又使用最早的方案!他们在一个单独的线程中有序的执行,除非你调用executeOnExecutor,并且传入一个ThreadPoolExecutor。
解决方法:
publicclass ConcurrentAsyncTask { public static void execute(AsyncTask as) { if (Build.VERSION.SDK_INT <Build.VERSION_CODES.HONEYCOMB) { as.execute(); } else { as.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); } } }
时间: 2024-10-05 04:27:31