我正在开发一个需要向/从服务器发送和接收 http 消息的 Android 项目(API 级别 10)。
我实现了一个名为 NetworkManager 的类,它提供了不同的方法,每个 http 请求一个方法(例如: loginRequest(user pass), RegistrationRequest(user.....) )。
所有这些方法都会生成一个 JSON 对象,该对象会传递给名为 sendMessage 的方法,该方法是实际建立连接、发送和接收响应的方法(也是一个 json 对象)。
当然网络调用很耗时,所以我首先决定在执行网络操作时使用 AsyncTask 来显示 progressDialog。
问题是我需要在执行任何其他涉及由主线程完成的结果本身的操作之前从后台线程检索响应值。同时,我想做一个通用且可重用的 AsyncTask 实现。
例如:我有一个登录活动,它显示 2 EditText(用户名、密码)和一个名为 Login 的按钮。当我按下登录按钮时,progressDialog 必须出现,并且必须在 doInBackground 任务完成后释放。当然我可以这样做:
onClick(View v) //called when the login button is pressed
{
onPreExecute()
{
//Show the progress dialog
}
doInBackground()
{
//Retreive the login response (an integer containing a message code) using sendLoginRequest(username, password);
//return the response
}
onPostExecute(int response)
{
//Dispose the progress dialog, then loginSucessfull ? start new activity : show error toast
}
}
但是,这样做我应该为我需要发送的每个请求实现一个异步任务,这是我想要避免的,因为如果我有 N 个请求,我应该创建 N 个扩展 AsyncTask 的类。
谢谢!