Android

Android 콜백 구현

Dean83 2022. 3. 24. 23:02

1. 인터페이스 정의
    - 콜백 함수에 정의할 인터페이스 정의 (네이버 로그인 기준으로 설명)

public interface NaverCallback {
    void loginSuccessCallback(String email);
    void loginFailCallback(String error);
}


2. 콜백을 받을 클래스에서 사용 (예 : MainActivity)
     - 
1. 에서 선언한 인터페이스 변수를 생성
     - 인자값으로 전달
 

//콜백 변수 생성 

private NaverCallback m_naverCallback = new NaverCallback() {
        @Override
        public void loginSuccessCallback(String email) {
            Log.d("haha","email : " + email);
        }

        @Override
        public void loginFailCallback(String error) {
            Log.d("haha","error : " + error);
        }
    };


......

//함수호출인자값으로 m_naverCallback  전달

 public void run(boolean success) {
            if(success)
            {
               
                NaverLoginNetwork network = new NaverLoginNetwork();
                network.SetToken(accessToken,m_naverCallback);
                network.execute();
            }
        };

3. 콜백을 호출할 클래스에서 사용 (예 : Network클래스)
     - 
2. 에서 넘겨준 인자값을 맴버변수로 등록
     - 필요할때 해당 맴버변수의 함수를 호출
 

//맴버변수 등록
private NaverCallback m_callback;

//2. 에서 전달한 인자값을 맴버변수에 등록
    public void SetToken(String token, NaverCallback callback)
    {
        m_token = token;
        m_callback = callback;
    }


 protected void onPostExecute(String content)
    {
        try {
            JSONObject obj = new JSONObject(content);
            JSONObject response = obj.getJSONObject("response");

            //콜백변수의 성공시 호출할 콜백 함수 호출
            m_callback.loginSuccessCallback(response.getString("email"));
        } catch (JSONException e) {

            //콜백변수의 실패시 호출할 콜백 함수 호출
            m_callback.loginFailCallback(e.getMessage());
            e.printStackTrace();
        }
    }