【发布时间】:2014-05-15 14:02:09
【问题描述】:
在我的项目中。对于几乎每个活动,我都必须制作一个 AsyncTask .. 而且几乎所有活动的工作都是相同的。我想创建一个通用的 AsyncTask 并扩展它。而且我还想在构造函数like this 中发送方法。然后每当我一个类扩展它。只需创建一个方法,它就能轻松完成我们的工作。和更少的编码..这很耗时..感谢提前帮助..
我的 asyncTask 之一是
private class GetData extends AsyncTask<String, Void, JSONObject> {
@Override
protected void onPreExecute() {
super.onPreExecute();
progressDialog = ProgressDialog.show(Calendar.this,
"", "");
}
@Override
protected JSONObject doInBackground(String... params) {
String response;
try {
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(url);
HttpResponse responce = httpclient.execute(httppost);
HttpEntity httpEntity = responce.getEntity();
response = EntityUtils.toString(httpEntity);
Log.d("response is", response);
return new JSONObject(response);
} catch (Exception ex) {
ex.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(JSONObject result)
{
super.onPostExecute(result);
progressDialog.dismiss();
if(result != null)
{
try
{
JSONObject jobj = result.getJSONObject("result");
String status = jobj.getString("status");
if(status.equals("true"))
{
JSONArray array = jobj.getJSONArray("data");
for(int x = 0; x < array.length(); x++)
{
HashMap<String, String> map = new HashMap<String, String>();
map.put("name", array.getJSONObject(x).getString("name"));
map.put("date", array.getJSONObject(x).getString("date"));
map.put("description", array.getJSONObject(x).getString("description"));
list.add(map);
}
CalendarAdapter adapter = new CalendarAdapter(Calendar.this, list);
list_of_calendar.setAdapter(adapter);
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
else
{
Toast.makeText(Calendar.this, "Network Problem", Toast.LENGTH_LONG).show();
}
}
}
我只想为每个 AsyncTask 更改 post 执行中的代码。如果我创建一个泛型类并将 Particular Method 传递给它。这将非常有帮助..
【问题讨论】:
-
查看 Volley,这是 google 推荐用于许多用例与 REST 服务进行通信的。与使用具有更高级功能的 asynctask 相比,它还可以更流畅、更简洁developers.google.com/events/io/sessions/325304728
标签: inheritance android-asynctask overloading