在Android中实现方法回调

Ale*_*euk 7 android callback

目前在我的项目中,我正在发出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)