gpt4 book ai didi

Android AsyncTask 最佳实践/设计模式?

转载 作者:行者123 更新时间:2023-11-29 00:18:02 25 4
gpt4 key购买 nike

我不是一个经验丰富的安卓开发者,但我是一名程序员。我想获得一些关于如何在 android 中使用 AsyncTasks 的建议。我知道如何实现它们,但令我困扰的是,如果我想让结果对 UI 可见,我必须从 AsyncTask 对 UI 进行更改。我不喜欢这样,因为我将 AsyncTask 或多或少想象成一个用于获取数据或进行一些计算的线程。我试图实现对 Activity 的回调,然后更改 UI。但我不确定这是否是一个好习惯。

Google 文档说:“AsyncTask 可以正确和轻松地使用 UI 线程。此类允许执行后台操作并在 UI 线程上发布结果,而无需操作线程和/或处理程序。”

简而言之,我不喜欢 AsyncTaks 更改 UI。我将 AsyncTask 视为获取数据的东西,并将 Activites 视为与 UI 交互的“ Controller ”。有什么好的模式可以与 AsyncTasks 一起使用吗?或更具体地说,是否可以在主 UI 线程的 onPostExecute 中进行回调?

最佳答案

您为自己提供了 AsyncTask 的最佳实践解释:

“AsyncTask 支持正确且轻松地使用 UI 线程。此类允许执行后台操作并在 UI 线程上发布结果,而无需操作线程和/或处理程序。”

要了解 AsyncTask 为什么以及如何作为后台进程运行,同时有可能与 UI 线程通信,让我们看一下这个示例:

new AsyncTask<Void, Void, Void>() {

@Override
protected void onPreExecute() {
// Callback executed on UI thread right before starting the background process.
}

@Override
protected Void doInBackground(Void... params) {
// Background process execution.
}

@Override
protected void onPostExecute(Void args) {
// Callback executed on UI thread right after finishing the background process.
}
}.execute();

正如谷歌所解释的那样,使用它而不是自定义线程/任务,消除了必须委托(delegate)处理程序并为 UI 线程交互构建自定义回调的必要性。

在 Android 中,由于大多数时候您需要后台进程是因为您希望将其结果传递/操作到 Activity(在 UI 线程上运行)中,AsyncTask 在进程前后提供了这种相互通信,可以为任何回调参数化数据。

关于Android AsyncTask 最佳实践/设计模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25099884/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com