【发布时间】:2012-11-26 21:03:09
【问题描述】:
我已经将这个 AsyncTask 用于几个项目,但仍然不太明白 <String, Void, String> 的含义。这些是否意味着未实现方法的参数类型?有什么命令吗(分别对应String、Void、String的方法是什么)?
【问题讨论】:
我已经将这个 AsyncTask 用于几个项目,但仍然不太明白 <String, Void, String> 的含义。这些是否意味着未实现方法的参数类型?有什么命令吗(分别对应String、Void、String的方法是什么)?
【问题讨论】:
android.os.AsyncTask<Params, Progress, Result>
异步任务使用的三种类型如下:
Params,执行时发送给任务的参数类型。
Progress,后台计算时发布的进度单位类型。
Result,后台计算结果的类型。
现在我的理解很简单:
Params:(在您的情况下为 String)是 AsyncTask 采用的参数。调用execute方法时必须通过这个
进度:(在您的情况下为 Void)是进度的类型。无效意味着您没有使用它。如果是整数,您可以使用 10、20、30... 等值并使用这些值在屏幕上显示进度条。
Result:(在您的情况下为 String)是 AsyncTask 返回的结果。您正在返回一个字符串。你可以返回任何你想要的对象。
简单来说,它有点像一个方法,其中Params是参数,Result是返回类型,progress告诉你处理进度的状态。
如需进一步了解,请参阅this tutorial,同样引用同一页面可能会有所帮助:
AsyncTask<TypeOfVarArgParams, ProgressValue, ResultValue>TypeOfVarArgParams 作为 输入,ProgressValue 用于进度信息和 ResultValue 必须从 doInBackground() 方法返回并传递给 onPostExecute() 作为参数。
【讨论】:
它被描述为in docs:
android.os.AsyncTask<Params, Progress, Result>
异步任务使用的三种类型如下:
Params, the type of the parameters sent to the task upon execution. Progress, the type of the progress units published during the background computation. Result, the type of the result of the background computation.
如果您不需要其中一种,请传递Void(但总是必须有 3 种类型)
【讨论】:
AsyncTask中的第一个参数是指在doInBackground中传递的参数,第二个参数是在onProgressUpdate中传递的,第三个参数是在onPostExecute中传递的。我们可以根据功能使用任何适合的数据类型。下面给出了参数类型(字符串、整数、字符串)的调用示例。
private class MyTask extends AsyncTask<String, Integer, String>
{
protected String doInBackground(String... u)
{
// do something in background
return null;
}
protected void onPreExecute()
{
// do something before start
}
public void onProgressUpdate(Integer... args)
{
}
protected void onPostExecute(String result)
{
// do something after execution
}
}
【讨论】: