繁体   English   中英

Asynctask是否需要进度对话框?

[英]Does Asynctask require a progress dialog?

我一直在使用Asynctask来调用API方法,并使用ProgressDialog向用户显示进程正在运行,除非进程完成或Asynctask已经在onPostExecute否则他们无法使用后台。

回到问题,是否真的需要ProgressDialog来显示进度并禁止用户在后台执行任何操作?

Asynctask是否需要进度对话框?

没有。

异步任务由在后台线程上运行的计算定义,并且其结果发布在UI线程上。 异步任务由3个通用类型(称为Params,Progress和Result)以及4个步骤(称为onPreExecute,doInBackground,onProgressUpdate和onPostExecute)定义。

以编程方式:在依赖异步任务完成或到达特定阶段之前,在用户产生进一步的非异常交互之前,将引入进度对话框。

它具有UI角度,在特定情况下,它可以在视觉上或通过动画吸引用户,这在应用程序不为用户“做任何事”时是一种好习惯。

Android参考:AsyncTask

有关为何使用异步任务的更多信息

is the ProgressDialog really required to show the progress and to prohibit the user from doing anything in the background?

不,可以在有或没有进度对话框或进度条的情况下使用Asynctasks。 进度对话框是可选的,使用它们的原因之一是让您的用户知道当前正在后台进行某个进程。

参考: http : //developer.android.com/reference/android/os/AsyncTask.html

不。 如果您需要等待响应,就可以将其显示给用户。 即使您不这样做,您的AsyncTask仍将在后台执行并执行应有的操作。 使用AsyncTask是阻止UI被阻塞。

例如:如果您只想向服务器发送某种更新,则可能不使用进度对话框。 例如告诉服务器您的应用在此特定时间启动。 用户不需要知道这一点。 因此,您只需要在后台执行AsyncTask并让用户正常使用App,而更新却在后台进行,而用户却不知道。

是否确实需要ProgressDialog来显示进度并禁止用户在后台执行任何操作?

如果您要在doinBackground内部使用许多活动,则必须在进度更新中指定一些内容,例如loading ,或者请稍等 ,否则,如果您的操作很少,只需保留该progressupdate。

显示进度确实需要ProgressDialog吗

使用AsyncTask显示ProgressDialog是可选的AFAIK。 但是您必须了解在AsyncTask中使用ProgressDialog的目的。 它用于阻止用户在任务运行时执行与应用程序的任何交互。 或者,您可能只想让他们知道后台正在发生某些事情。

不必要。

在AsyncTask中简单使用Progress对话框,可以使最终用户在执行长时间运行的进度时保持参与。

这取决于您的应用程序的全部内容以及您调用AsyncTask的频率,如果您对AsyncTask的调用过于频繁,例如每分钟1-2次调用,那么这可能是一个不良的设计实践,您的用户将因此而烦恼进度对话框频繁显示,这也会减少电池寿命并消耗更多数据带宽。 相反,您应该尝试通过一个呼叫将所有请求批处理。 看看这个链接,它可能会带给您领先的http://developer.android.com/training/ficient-downloads/ficient-network-access.html

不需要ProgressDialog ,但这是一个好习惯,因为它会通知用户正在进行的任务,并停止执行另一个AsyncTask
虽然一个AsyncTask在后台运行,但另一个在后台运行,但几乎不支持并行运行。
就我而言,最好使用ProgressDialog ,因为在ProgressDialog关闭时, AsyncTask已完成并且不能并行执行。
看到这个。 同时运行多个AsyncTasks-不可能吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM