我正在尝试使用正在查询的数据执行asynctask并从表单中返回数据:
Map<String, List<Object>>
我尝试像这样启动asynctask:
public class GetIndividualAlarmsFromDataBase extends AsyncTask <Map<String, List<Object>>
我认为是正确的,因为我没有在实现方法旁边出现任何错误。
但是当我去实现这些方法时,我错误地执行了这些方法,因为它说方法不会覆盖超类。
我尝试在这样的背景中创建do:
@Override
protected Map<String, List<Object> doInBackground(Map<String, List<Object>> map) {
return null;
}
并且on post执行如下:
@Override
public void onPostExecute(Map<String, List<Object>> map) {
}
我的语法有什么问题,我将如何正确实现?
由于
答案 0 :(得分:1)
我可以从documentation AsyncTask
看到3个通用参数:
异步任务由3种泛型类型定义,称为Params,Progress和Result
您只提供了“Params”,因此默认情况下“进度”和“结果”为Object
。
答案 1 :(得分:1)
只需使用对象类来限定 AsyncTask参数,进度,结果
public class GetIndividualAlarmsFromDataBase extends AsyncTask <Map ,Void,Map>{
@Override
protected Map doInBackground(Map... params) {
return null;
}
@Override
protected void onPostExecute(Map map) {
super.onPostExecute(map);
}
}
答案 2 :(得分:1)
您必须为参数,进度,结果
定义参数public abstract class AsyncTask<Params, Progress, Result>
-
public static class GetIndividualAlarmsFromDataBase extends AsyncTask<Map<String, List<Object>>,Void ,Map<String, List<Object>>> {
@Override
protected Map<String, List<Object>> doInBackground(Map<String, List<Object>>[] maps) {
return null;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
}
}
答案 3 :(得分:1)
根据开发人员gide link AsyncTask语法就像这样
public abstract class AsyncTask<Params, Progress, Result>
所以你的AsyncTask看起来像
public class GetIndividualAlarmsFromDataBase extends AsyncTask<String,Void,Map<String,List<Object>>>
答案 4 :(得分:1)
以简单的术语表示AsyncTask的参数:
extends AsyncTask<<Map<String, List<Object>>, Integer, Map<String, List<Object>>>{}
所以现在你的班级看起来像:
public class GetIndividualAlarmsFromDataBase extends AsyncTask<Map<String, List<Object>>, Integer, Map<String, List<Object>>> {
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected Map<String, List<Object>> doInBackground(Map<String, List<Object>>[] maps) {
return null;
}
@Override
protected void onProgressUpdate(Integer... values) {
super.onProgressUpdate(values);
}
@Override
protected void onPostExecute(Map<String, List<Object>> maps) {
super.onPostExecute(maps);
}
}