【发布时间】:2011-11-28 22:28:59
【问题描述】:
如何从我的 AsyncTask 中获取数据?我的 MainActivity 正在调用触发 AsyncTask 的 DataCall.getJSON 函数,但我不确定如何将数据返回到原始 Activity。
调用 DataCall 的 MainActivity 应返回一个字符串并将其保存在 state_data
String state_data = DataCall.getJSON(spinnerURL,spinnerContentType);
数据调用:
public class DataCall extends Activity {
private static final String TAG = "MyApp";
private class DownloadWebPageTask extends AsyncTask<String, Void, String> {
protected String doInBackground(String... urls) {
String response = "";
for (String url : urls) {
DefaultHttpClient client = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(url);
try {
HttpResponse execute = client.execute(httpGet);
InputStream content = execute.getEntity().getContent();
BufferedReader buffer = new BufferedReader(
new InputStreamReader(content));
String s = "";
while ((s = buffer.readLine()) != null) {
response += s;
}
} catch (Exception e) {
e.printStackTrace();
}
}
return response;
}
protected void onPostExecute(String result) {
//THIS IS WHERE I NEED TO RETURN MY DATA TO THE MAIN ACTIVITY. (I am guessing)
}
}
public void getJSON(String myUrlString, String contentType) {
DownloadWebPageTask task = new DownloadWebPageTask();
task.execute(new String[] { "http://www.mywebsite.com/" + myUrlString });
}
}
【问题讨论】:
-
为什么不尝试服务驱动的 REST 调用模型?而不是在依赖于 Activity 的线程上执行请求?
标签: java android android-asynctask