마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

AsyncTask 관련 질문 하나 드립니다.

0 추천
TestAsnyc라는 AsyncTask를 상속받는 클래스를 구현하였습니다.

해당 클래스는 doInBackground에 DB서버에 접속하여 쿼리문을 통해 조회 후

onPostExcute에서 DB 결과값을 처리하는 형식으로 구현되어있습니다.

그런데 이 방식을

onPostExcute의 결과값을 다른 클래스에서 반환 받아 사용할수 있게끔 사용하고 싶습니다.

예를들어 int 값, boolean 값이라던지.....

 

Async a = new Async(this).excute(); 후에 따로 반환 값을 가지고 올 방법을 모르갰더군요..

어떤 식으로 반환 값을 가져오면 될까요?
꿈꾸는쭌 (1,130 포인트) 님이 2015년 4월 2일 질문

1개의 답변

+2 추천
 
채택된 답변
리스너 interface 하나 만들어서 TestAsync 클래스 생성자에 추가하고

onPostExecute에서 리스너로 값을 전달하면 됩니다.

 

예를 들어 onPostExecute에서 result라는 int 값을 받고 싶다면

 

1. 인터페이스 생성 (네이밍은 잘아서 잘 하시기 바랍니다)

interface Listener {

     public void onPost(int result);

}

 

2. 인터페이스 초기화

Listener mListener = new Listener() {

      @Override

      public void onPost(int result) {

           //Todo something

      }

};

 

3. 인터페이스 AsyncTask에 전달

Async a = new Async(this, mListener);

 

4. AsyncTask에서 리스너에 값전달

class Async extends AsyncTask {

    Listener listener;

    public Async(Context context, Listener listener) {

          this.listener = listener;

    }

    @Override

    protected void onPostExecute(int result) {

            if (this.listener != null) {

                  this.listener.onPost(result);

            }

    }

}
Gradler (109,780 포인트) 님이 2015년 4월 2일 답변
Gradler님이 2015년 4월 2일 수정
아하 그런방법이 있었군요 ㅎ 감사합니다 ^ㅡ^
...