在Android 12中,AsyncTask的executeOnExecutor方法不再起作用。推荐的解决方法是使用线程池来替代。以下是示例代码:
ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor( CORE_POOL_SIZE, MAX_POOL_SIZE, KEEP_ALIVE_TIME, TimeUnit.SECONDS, new LinkedBlockingDeque<>());
其中,CORE_POOL_SIZE和MAX_POOL_SIZE是线程池的核心线程数和最大线程数;KEEP_ALIVE_TIME是线程保活时间,即当线程池中线程数超过CORE_POOL_SIZE时,多余的空闲线程的存活时间。
创建一个继承自Runnable的类,作为要执行的任务,例如:
class MyTask implements Runnable { @Override public void run() { // 执行异步任务 } }
将任务提交到线程池中执行即可,例如:
MyTask task = new MyTask(); threadPoolExecutor.execute(task);
通过这种方式,就可以在Android 12中实现AsyncTask的executeOnExecutor方法的功能。