在Android R中,AsyncTask已被标记为过时。Google建议使用更现代的并发库来替代AsyncTask,如Executor框架和Coroutines。下面是使用Executor框架和Coroutines来替代AsyncTask的示例代码:
使用Executor框架:
// 在Activity或Fragment中的某个方法中调用
Executor myExecutor = Executors.newSingleThreadExecutor();
myExecutor.execute(new MyTask());
// 创建一个实现Runnable接口的自定义任务
private class MyTask implements Runnable {
@Override
public void run() {
// 执行后台任务
// ...
// 更新UI
runOnUiThread(new Runnable() {
@Override
public void run() {
// 更新UI
// ...
}
});
}
}
使用Coroutines:
// 在Activity或Fragment中的某个方法中调用
lifecycleScope.launch {
val result = withContext(Dispatchers.IO) {
// 执行后台任务
// 返回结果
}
// 更新UI
// ...
}
请注意,使用Coroutines需要在项目的build.gradle文件中添加相应的依赖项。例如:
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.9'
以上是使用Executor框架和Coroutines来替代AsyncTask的示例代码。根据您的具体需求和项目架构,您可以选择其中一种方式来处理后台任务和更新UI。
上一篇:Android R : API 30 : 系统栏可见性变化回调
下一篇:Android R – 使用Scoped存储在Download文件夹中创建文本文件(MediaStore.Downloads)