Notice
Recent Posts
Recent Comments
Link
투케이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 [클래스 종료]
[참고 사이트]
반응형
'투케이2K 알고리즘' 카테고리의 다른 글
Comments