我一直在使用Asynctask
来调用API方法,并使用ProgressDialog
向用户显示进程正在进行,除非进程已完成,否则他们无法使用后台或{ {1}}已在Asynctask
。
回到这个问题,onPostExecute
是否真的需要显示进度并禁止用户在后台做任何事情?
答案 0 :(得分:1)
Asynctask 是否需要 进度对话框?
没有
异步任务由在a上运行的计算定义 后台线程,其结果发布在UI线程上。一个 异步任务由3种泛型类型定义,称为Params, 进度和结果,以及4个步骤,称为onPreExecute,doInBackground, onProgressUpdate和onPostExecute。
以编程方式:当依赖于异步任务以完成或到达特定阶段之前,会引入进度对话框,之后会有来自用户的进一步非异常结果。
它有一个UI角度,在指定的情况下,用户可视地或通过动画吸引用户,这是一个很好的做法,当应用程序没有为用户“做”任何事情时。
答案 1 :(得分:1)
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
答案 2 :(得分:0)
不。如果您需要等待响应,它只是您可以向用户显示的内容。即使你没有,你的AsyncTask
仍将在后台执行,并按照预期执行。使用AsyncTask
的重点是阻止UI被阻止。
例如:
如果您只想将某种更新发送到服务器,则可能不会使用进度对话框。比如告诉服务器您的应用程序是在此特定时间启动的。用户不需要知道这一点。因此,您只需在后台执行AsyncTask
并让用户正常使用应用程序,而更新在后台进行,而用户无需了解。
答案 3 :(得分:0)
ProgressDialog是否真的需要显示进度并禁止用户在后台执行任何操作?
如果您正在使用doinBackground
内的许多活动,请注意,
您必须在进度更新中指定某些内容,例如加载,或请稍候,否则如果您的操作非常少,请保留该更新日期。
答案 4 :(得分:0)
是真正需要显示进度的ProgressDialog
使用ProgressDialog
时显示AsyncTask
是可选的AFAIK。但您必须了解在ProgressDialog
中使用AsyncTask
的目的。它用于阻止用户在任务运行时与应用程序执行任何交互。或者你可能想让他们知道后台发生了什么事。
答案 5 :(得分:0)
不必要。
AsyncTask中简单使用Progress Dialog用于在执行长时间运行进度时让最终用户参与进来。
答案 6 :(得分:0)
这取决于你的应用程序是什么以及你调用AsyncTask的频率,如果你过于频繁地调用AsyncTask例如1-2次/分钟那么这可能是一个糟糕的设计实践,你的用户将会由于频繁显示进度对话框而烦恼,这也会缩短电池寿命并消耗更多数据带宽。相反,您应该尝试通过一次调用批量处理所有请求。看一下这个链接,它可能会给你一个良好的开端http://developer.android.com/training/efficient-downloads/efficient-network-access.html
答案 7 :(得分:0)
不需要ProgressDialog
,但这是一个很好的做法,因为它会告知用户正在进行的任务,并且可能会停止执行另一个AsyncTask
。
当一个AsyncTask
在后台运行时,另一个运行,几乎不支持并行运行。
这是一个很好的做法,因为我担心使用ProgressDialog
,因为当ProgressDialog
解散时,AsyncTask
已完成且无法并行执行。
看到这个。 Running multiple AsyncTasks at the same time -- not possible?