我很震惊这个问题,在从doInBackground成功返回时, onPostExecute只是没有被执行。
我读过this StackOverflow answer,其中说params存在问题。但是,我无法弄清楚原因。我一直在运行许多AsyncTasks,但从未遇到过这样的问题。 其他类似的SO答案也无济于事。
以下是我的代码。我在companyVO中成功获得价值的地方。 请帮我解决这个问题。
我觉得这与参数有关。即使 postExecute上的@Override注释显示错误。
class companyCall extends AsyncTask<Void, Void, ArrayList<CompanyVO.ResultSet>> {
protected ArrayList<CompanyVO.ResultSet> doInBackground(Void...params) {
SharedPreferences prefrence = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
String Token = prefrence.getString("token", "");
try {
WebserviceImpl webservices = new WebserviceImpl();
companyVO = webservices.getAllCompanyINfo(Token, getApplicationContext());
} catch (Exception e) {
Log.e("TAG", "Exception", e);
return null;
}
return companyVO;
}
protected void onPostExecute(CompanyVO.ResultSet result) {
if (result != null) {
Log.e("Done", "done"+result.getName());
} else {
Log.e("Error", "Not done");
}
}
}
答案 0 :(得分:3)
你错过了@Override
。所以它不是覆盖的方法,你也使用了不同的参数。它应该是。
class CompanyCall extends AsyncTask<Void, Void, ArrayList<CompanyVO.ResultSet>> {
@Override
protected ArrayList<CompanyVO.ResultSet> doInBackground(Void...params) {
SharedPreferences prefrence = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
String Token = prefrence.getString("token", "");
try {
WebserviceImpl webservices = new WebserviceImpl();
companyVO = webservices.getAllCompanyINfo(Token, getApplicationContext());
} catch (Exception e) {
Log.e("TAG", "Exception", e);
return null;
}
return companyVO;
}
@Override
protected void onPostExecute(ArrayList<CompanyVO.ResultSet> result) {
if (result != null) {
Log.e("Done", "done"+result.getName());
} else {
Log.e("Error", "Not done");
}
}
}
答案 1 :(得分:1)
你的结果是Arraylist,用forloop访问它
class CompanyCall extends AsyncTask<Void, Void, ArrayList<CompanyVO.ResultSet>> {
@Override
protected ArrayList<CompanyVO.ResultSet> doInBackground(Void...params) {
SharedPreferences prefrence = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
String Token = prefrence.getString("token", "");
try {
WebserviceImpl webservices = new WebserviceImpl();
companyVO = webservices.getAllCompanyINfo(Token, getApplicationContext());
} catch (Exception e) {
Log.e("TAG", "Exception", e);
return null;
}
return companyVO;
}
@Override
protected void onPostExecute(ArrayList<CompanyVO.ResultSet> result) {
if (result != null) {
for(CompanyVO.ResultSet result_:result) {
Log.e("Done", "done"+result_.getName());
}
} else {
Log.e("Error", "Not done");
}
}
}