private class EarthquakeAsyncTask extends AsyncTask <String, Void, Event>{
@Override
protected Event doInBackground(String... urls) {
// Perform the HTTP request for earthquake data and process the response.
Event result = Utils.fetchEarthquakeData(urls[0]);
return result;
}
protected void onPostExecute(Event result){
// Update the information displayed to the user.
updateUi(result);
}
}
为什么在此代码段中使用事件类型?有人可以解释一下吗?
答案 0 :(得分:0)
您可以将任何对象用于第三种类型的AsyncTask泛型类型。对于来自documentation:
异步任务使用的三种类型如下:
- 参数,执行时发送给任务的参数类型。
- 进度,后台计算期间发布的进度单位的类型。
- 结果,后台计算结果的类型。
醇>
以下课程:
private class EarthquakeAsyncTask extends AsyncTask <String, Void, Event>{
...
}
这意味着该类使用字符串作为参数, Void 作为进度(这意味着它忽略了进度),并且事件作为doInBackground()
方法中的过程结束时的结果。
EarthquakeAsyncTask
的被调用者代码需要Event作为参数:
protected void onPostExecute(Event result){
// Update the information displayed to the user.
updateUi(result);
}
显然,EarthquakeAsyncTask需要将Event作为第三种类型。