目前在我的项目中,我正在发出Http请求,我希望将不同的http响应发送到不同的回调方法.
我在下面写了一个快速示例来展示我想要做的事情.我知道它可能不会像我想要的那样,但有没有任何干净的解决方案来实现同样的目的?
样品:
活动类:
public class Main extends Activity{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Services service = new Services();
service.login("user", "password", **onLoginComplete()** );
}
public void onLoginComplete(String HTTPResponse){
// Do something with the response
}
}
Run Code Online (Sandbox Code Playgroud)
服务类别:
public class Services{
public void login(String user, String password, CALLBACK){
Request request = createLoginRequest(user, password);
sendRequest(request, CALLBACK);
}
public class sendRequest extends AsyncTask{
@Override
protected Object doInBackground(Object... params) {
// Do Http Request
// Get Response
CALLBACK(response);
}
}
}
Run Code Online (Sandbox Code Playgroud)
Vol*_*nis 20
interface OnLoginCompleteListener {
void onLoginComplete(String response);
}
Run Code Online (Sandbox Code Playgroud)
然后
public void login(String user, String password, OnLoginComplete listener) {
mOnCompleteListener = listener;
}
Run Code Online (Sandbox Code Playgroud)
和
protected Object doInBackground(Object... params) {
mOnCompleteListener.onLoginComplete(response);
}
Run Code Online (Sandbox Code Playgroud)
最后
service.login("user", "password", new OnLoginCompleteListener() {
public void onLoginComplete(String response) {
// Handle your response
}
});
Run Code Online (Sandbox Code Playgroud)