我希望这不是太胡说八道。我已经实现了一个异步网络服务调用,因为我不希望手机/应用程序/用户界面在等待数据时锁定......但是我不希望程序继续执行它现在正在做的事情并崩溃.
我的应用程序从服务请求数据,服务返回一个 xml 文档。当服务正在生成文档时,我的程序继续执行并在到达代码正在查找文件的部分时崩溃……那还不存在。
所以我需要知道在这种情况下一个人在java中是如何/做什么的?在 C# 中,我知道该怎么做。这是异步调用的代码,请随时指出其中的任何问题。
public class DataExchangeServiceClient
{
private static final String BASE_URL = "http://www.icyarmtesting.com/";
private static AsyncHttpClient client = new AsyncHttpClient();
public static void get(String url, RequestParams params, AsyncHttpResponseHandler responseHandler)
{
client.get(getAbsoluteUrl(url), params, responseHandler);
}
public static void post(String url, RequestParams params, AsyncHttpResponseHandler responseHandler)
{
client.post(getAbsoluteUrl(url), params, responseHandler);
}
private static String getAbsoluteUrl(String relativeUrl)
{
return BASE_URL + relativeUrl;
}
}
然后是实现......是的,我知道它现在是硬编码的。
protected static boolean GetExerciseData() throws JSONException
{
RequestParams params = new RequestParams();
params.put("Action", "");
params.put("ProgramID", "8008009");
params.put("UserName", "joex");
params.put("Password", "dude!");
DataExchangeServiceClient.get("liftdataexchange.xamlx", params, new JsonHttpResponseHandler()
{
@Override
public void onSuccess(JSONArray timeline)
{
try
{
JSONObject firstEvent = (JSONObject) timeline.get(0);
String XML_DOC_String = firstEvent.getString("text");
}
catch(JSONException jse)
{
}
//send it off to become a document
}
});
return true;
}