从Handler调用的AsyncTask不会执行doInBackground方法,这是因为AsyncTask已经被弃用,不推荐使用。建议使用其他方法来实现异步任务,例如使用线程池、线程、协程等方法。
AsyncTask是一个用于在后台线程中执行异步任务的类,它允许在后台线程中执行耗时操作,并在主线程中更新UI。但是,由于AsyncTask存在一些问题,例如内存泄漏、线程池的限制等,它已经被弃用,不推荐使用。
如果您需要在后台线程中执行异步任务,建议使用线程池、线程、协程等方法。线程池可以帮助您更有效地管理线程资源,线程可以让您在后台线程中执行任务,而协程可以让您更轻松地实现异步任务。
例如,使用线程池来执行异步任务:
ExecutorService executorService = Executors.newFixedThreadPool(10);
executorService.execute(new Runnable() {
@Override
public void run() {
// 在后台线程中执行任务
}
});
使用线程来执行异步任务:
new Thread(new Runnable() {
@Override
public void run() {
// 在后台线程中执行任务
}
}).start();
使用协程来执行异步任务:
GlobalScope.launch(Dispatchers.IO) {
// 在后台线程中执行任务
}
总之,AsyncTask已经被弃用,不推荐使用。建议使用其他方法来实现异步任务,例如使用线程池、线程、协程等方法。
领取专属 10元无门槛券
手把手带您无忧上云