【发布时间】:2014-07-15 01:34:11
【问题描述】:
我是 Android 新手。自从我开始从事这个项目以来已经有几个星期了。阅读代码已经让我看到很多私有异步任务基本相同(调用 API)所以我想知道是否有更好的解决方案,我的想法是创建一个名为 ApiCaller 的公共异步任务,它将返回一个 JSONObject 和负责解析 JSON 的是调用 ApiCaller 的类:
public class ApiCaller extends AsyncTask<String, String, JSONObject> {
private static final String TAG = "ApiCall";
private final String apiVersion = "v1";
private final String baseURL = "http://my.api.com/";
private String URL = null;
/**
* Generates the URL to call the API.
*
* @param params List with the params to call the API.
*/
public ApiCaller(ArrayList<NameValuePair> params){
String apiURL = this.baseURL + this.apiVersion + "/?";
String paramsList = URLEncodedUtils.format(params, "utf-8");
this.URL = apiURL + paramsList;
}
@Override
protected JSONObject doInBackground(String ... params) {
Log.i(TAG, "API:");
Log.i(TAG, this.URL);
JSONManager jParser = new JSONManager();
JSONObject jsonObject = jParser.getJSONFromUrl(this.URL);
return jsonObject;
}
有没有办法在类之外返回 JSONObject,这样我就可以执行以下操作:
JSONObject js = apiCaller.execute();
或者任何其他解决方案可以避免在每次我需要调用 API 时创建新的异步任务?使用我当前的代码,我无法得到它,但我不知道缺少什么?也许在 onPostExecute 中返回它?
【问题讨论】:
标签: java android architecture android-asynctask