투케이2K

39. (TWOK/ALGORITHM) [Java] 문법 - 비동기 (Async) 콜백 호출 클래스 정의 - Thread , Handler , AsyncTask 본문

투케이2K 알고리즘

39. (TWOK/ALGORITHM) [Java] 문법 - 비동기 (Async) 콜백 호출 클래스 정의 - Thread , Handler , AsyncTask

투케이2K 2022. 7. 14. 10:34

[환경 설정 및 설명]

언 어 : Java

설 명 : 문법 - 비동기 (Async) 콜백 호출 클래스 정의 - Thread , Handler , AsyncTask

 

[소스 코드]

package kr.co.two2k.manager;

import android.os.Handler;
import android.os.Message;

public abstract class C_AsyncCallBack <T_RESULT> implements Runnable{

    /** ========= [사용 방법 예시] ========
    new C_AsyncCallBack<String>() { //TODO [RESULT 선언]
        @Override
        protected void onStart() {
            Log.d("---","---");
            Log.d("//===========//","================================================");
            Log.d("","\n"+"[A_AA_Test_Java > C_AsyncCallBack : onStart() 메소드 : 비동기 작업 시작 실시]");
            Log.d("//===========//","================================================");
            Log.d("---","---");
        }
        @Override
        protected String onTask() { //TODO [RESULT 반환]
            Log.d("---","---");
            Log.d("//===========//","================================================");
            Log.d("","\n"+"[A_AA_Test_Java > C_AsyncCallBack : onTask() 메소드 : 비동기 작업 처리 실시]");
            Log.d("//===========//","================================================");
            Log.d("---","---");
            String result = "";
            try {
                //TODO [실제 작업 처리 내용 : 파이어베이스 토큰 값 확인]
                result = FirebaseInstanceId.getInstance().getToken();
            }
            catch (Exception e){
                result = e.getMessage();
                e.printStackTrace();
            }
            return String.valueOf(result);
        }
        @Override
        protected void onResult(final String result) {
            Log.d("---","---");
            Log.w("//===========//","================================================");
            Log.d("","\n"+"[A_AA_Test_Java > C_AsyncCallBack : onResult() 메소드 : 비동기 작업 결과 확인]");
            Log.d("","\n"+"[결과 : "+String.valueOf(result)+"]");
            Log.w("//===========//","================================================");
            Log.d("---","---");
            try {
                runOnUiThread(new Runnable() {
                    public void run() {
                        //TODO [응답 결과 확인 및 동적 UI 변경 실시]
                        display_textview.setText(String.valueOf(result));
                    }
                });
            }
            catch (Exception e){
                e.printStackTrace();
            }
        }
    }.execute();
    */

    /** ======= [input, output 변수 선언] ====== **/
    T_RESULT mResult;

    /** ======= [작업 실행 시작 부분 정의] ====== **/
    protected abstract void onStart();
    final public void execute() {
        //TODO [작업 시작 호출]
        onStart();

        //TODO [스레드 작업 시작]
        Thread thread = new Thread(this);
        thread.start();
    }

    /** =========== [작업 처리 부분] =========== **/
    protected abstract T_RESULT onTask();
    @Override
    public void run() {
        //TODO [작업 처리]
        mResult = onTask();

        //TODO [핸들러 호출]
        mResultHandler.sendEmptyMessage(0);
    }

    /** ========= [작업 결과 확인 부분] ========= **/
    protected abstract void onResult(T_RESULT result);
    Handler mResultHandler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);

            //TODO [응답 결과 반환]
            onResult(mResult);
        }
    };

}//TODO [클래스 종료]

[참고 사이트]

https://kkh0977.tistory.com/785

 

166. (AndroidStudio/android/java) 비동기 콜백 호출 클래스 정의 - Thread , Handler , AsyncTask

/* =========================== */ [ 개발 환경 설정 ] ​ 개발 툴 : AndroidStudio 개발 언어 : java /* =========================== */ ​ /* =========================== */ [소스 코드] package kr.co.two..

kkh0977.tistory.com


 

반응형
Comments