我有一个 MainActivity 类,我从中调用 JsonObj 类的一个实例。JsonObj 扩展了 AsynchTask。它粘贴在下面:
public class JsonObj extends AsyncTask<String, Void, JSONObject>{
int tid;
String term;
@Override
protected JSONObject doInBackground(String... url) {
// TODO Auto-generated method stub
DefaultHttpClient httpclient = new DefaultHttpClient(new BasicHttpParams());
HttpPost httppost = new HttpPost(url[0]);
JSONObject jsonObject = null;
// Depends on your web service
httppost.setHeader("Content-type", "application/json");
InputStream inputStream = null;
String result = null;
try {
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
inputStream = entity.getContent();
// json is UTF-8 by default
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null){
sb.append(line + "\n");
}
result = sb.toString();
// Log.e("JSON-Test [RESULT]: ", result);
jsonObject = new JSONObject(result);
} catch (Exception e) {
Log.e("JSON-Test [exception]: ", e.toString());
}
finally {
try{if(inputStream != null)inputStream.close();}catch(Exception squish){}
}
return jsonObject;
}
@Override
protected void onPostExecute(JSONObject result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
}
}
我想要实现的是一个 AsyncTask 类,我可以从任何将从我的服务器获取和返回 JSON 的活动中调用它。
我的问题是我的 AsyncTask 类成功地获取了我的 JSON,但我正在努力将它传递回我的活动。
我知道 OnPostExecute 函数在我的 AsyncTask 完成时返回数据,但是我所有访问我的 Activity 类中的数据的尝试都不起作用。
我new JsonObj().execute("http://myserver/json");
用来调用我的 JsonObj 类。
如何调用 OnpostExecute 直接访问我的 AsynchTask 从我的服务器获取的数据,或者有什么更好的解决方案?