[英]Does Asynctask require a progress dialog?
我一直在使用Asynctask
来调用API方法,并使用ProgressDialog
向用户显示进程正在运行,除非进程完成或Asynctask
已经在onPostExecute
否则他们无法使用后台。
回到问题,是否真的需要ProgressDialog
来显示进度并禁止用户在后台执行任何操作?
Asynctask是否需要进度对话框?
没有。
异步任务由在后台线程上运行的计算定义,并且其结果发布在UI线程上。 异步任务由3个通用类型(称为Params,Progress和Result)以及4个步骤(称为onPreExecute,doInBackground,onProgressUpdate和onPostExecute)定义。
以编程方式:在依赖异步任务完成或到达特定阶段之前,在用户产生进一步的非异常交互之前,将引入进度对话框。
它具有UI角度,在特定情况下,它可以在视觉上或通过动画吸引用户,这在应用程序不为用户“做任何事”时是一种好习惯。
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.