我想知道它是如何工作的。我已经阅读了几次文档,但是没有理解。
我注意到在某些情况下onPostExecute
什么也没做。
有人可以给我一点解释吗?
答案 0 :(得分:11)
AsyncTask
是一个派生自Thread
的类,它为您提供了一种简单而恰当的方法,可以在后台执行某些操作,并能够通知UI Thread
。
为了使用它,你应该创建一个class
,extends
并定义类型参数。它们是Params
,Progress
和Result
。更多地了解here。
onPostExecute()
是一个在doInBackground()
完成执行时调用的方法,但onPostExecute()
在UI线程上运行。因此,您可以通知UI有关已完成的工作。
您可以看到AsyncTask
使用here的示例。
答案 1 :(得分:3)
<Void, Void, Long>
部分是Java中的Generics部分。无论“最终用户”选择什么类型,它都会用在那些原始编码器希望它被使用的类中。
通常,当您想要启动/停止进度对话框时,请使用onPre/PostExecute()
。
如果你想在没有进度对话的情况下在进度期间更新UI,你可以在onProgressUpdate()
中进行操作(即:你正在从网上加载图像并在加载时显示它们)
如果您有一个带进度条的对话框,则必须使用所有这些对话框来更新进度条。
答案 2 :(得分:2)
This帖子很好地解释了AsyncTask概念图!
答案 3 :(得分:0)
{onPostExecute()}
后,如果您想要执行某些操作,则会使用 {(doInBackground())}
。
例如,
start Progress Bar @ {onPreExecute()}
running Progress Bar @ {doInBackground()}
stop Progress Bar @ {onPostExecute()}