在Android 11(API 30)中,AsyncTask.THREAD_POOL_EXECUTOR已被弃用。推荐使用Executors类中提供的静态方法来创建线程池。以下是使用Executors类中的静态方法来创建线程池的示例代码:
// 旧代码
AsyncTask.execute(new Runnable() {
@Override
public void run() {
// 任务代码
}
});
// 新代码
ExecutorService executor = Executors.newSingleThreadExecutor();
executor.execute(new Runnable() {
@Override
public void run() {
// 任务代码
}
});
这里是一个更加完整的示例代码:
public class MyAsyncTask extends AsyncTask {
@Override
protected Void doInBackground(Void... voids) {
// 任务代码
return null;
}
// 旧的代码
public void execute() {
executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
// 新的代码
public void executeNew() {
ExecutorService executor = Executors.newSingleThreadExecutor();
executeOnExecutor(executor);
}
}
使用以上代码,您可以避免使用AsyncTask.THREAD_POOL_EXECUTOR的问题并得到正确的结果。