我正在使用Android Asynchronous Http Client。
哪一个是真的:为每个请求创建一个 <sequence key="{get-property('seqName')}"/>
,或为所有请求创建一个客户端。
现在我有一个AsyncHttpClient
像这样:
Singltone RequestHelper
您可以看到我现在正在为每个请求创建private RequestHelper() {
mContext = MyApplication.getContext();
baseUrl = mContext.getString(R.string.base_url);
}
public static RequestHelper getInstance() {
if (instance == null) {
instance = new RequestHelper();
}
return instance;
}
public void performLoginRequest(String username, String password, GsonHttpResponseHandler gsonHttpResponseHandler) {
AsyncHttpClient client = new AsyncHttpClient();
attachHeaders(client);
client.post(mContext, baseUrl + "/login", null, "application/json", gsonHttpResponseHandler);
}
public void getCountries(GsonHttpResponseHandler gsonHttpResponseHandler) {
AsyncHttpClient client = new AsyncHttpClient();
client.get(mContext, baseUrl + "/countries", null, gsonHttpResponseHandler);
}
个对象
答案 0 :(得分:0)
我认为为每个请求创建一个Asynctask更适合代码审查。我认为如果您管理每个案例并向AsyncTask提供正确的输入以让它知道它需要执行哪个函数,我们都可以完成。但是您可能以2000行类而不是10个200行的类来结束,并使用显式类名,所以任何时候你需要改变一些东西,你可能需要检查整个2000行,并在改变一些东西后,你需要确保你没有在课堂上打破任何东西。但这只是一个意见问题。
答案 1 :(得分:0)
从源链接上找到的这个示例中,可以为所有请求创建一个客户端。你可以多次使用它。
import com.loopj.android.http.*;
public class TwitterRestClient {
private static final String BASE_URL = "http://api.twitter.com/1/";
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;
}
}
因此,答案是为所有请求创建一个客户端。