Android
[Android,Java] (Deprecated) AsyncTask 대체하기
밤토리세상
2023. 11. 13. 15:20
이전부터 디프리케이트 된다고 말이있었는데
14부터 막히는거 같아서 이제서야 대응하는점.... (아직 되는걸수도 있다?)
이전에 올린 인앱 업데이트와 짬뽕으로 콜라보를 찍어주어서 같이 대응했었다.
앱 로드시 무결성 체크를 하는 업체의 소프트웨어를 사용중인데 제공받은 파일들의 해당 클래스가 AsyncTask 로 되어있고
혹시나 이것이 막히면서 동작을 안하나 싶어서 괜찮은 클래스를 작성해주신것을 발견! 바로 적용해서 바꾸어 주었다
https://calvinjmkim.tistory.com/35
안드로이드 (Deprecated) AsyncTask 대체하기
안드로이드에서 백그라운드 작업을 하기 위해 자주 사용하는 AsyncTask가 사망선고를 받았다. 작년 하반기에 올라온 이 커밋에서 AsyncTask에 @Deprecated가 붙었고, 커멘트에 다음과 같이 나와 있다. Asy
calvinjmkim.tistory.com
출처 및 자세한 설명은 해당 블로그에서 !!
public abstract class ThreadTask<T1,T2> implements Runnable {
// Argument
T1 mArgument;
// Result
T2 mResult;
// Handle the result
public final int WORK_DONE = 0;
Handler mResultHandler = new Handler(msg -> {
onPostExecute(mResult);
return false;
});
// Execute
final public void execute(final T1 arg) {
// Store the argument
mArgument = arg;
// Call onPreExecute
onPreExecute();
// Begin thread work
Thread thread = new Thread(this);
thread.start();
}
@Override
public void run() {
// Call doInBackground
mResult = doInBackground(mArgument);
// Notify main thread that the work is done
mResultHandler.sendEmptyMessage(WORK_DONE);
}
// onPreExecute
protected abstract void onPreExecute();
// doInBackground
protected abstract T2 doInBackground(T1 arg);
// onPostExecute
protected abstract void onPostExecute(T2 result);
}
위 클래스를 만들어서 AsyncTask 처럼 사용해주면 된다
다른 분들이 해결해놓은것도 많았는데 기존것을 거의 손대지 않으면서 적용할수 있다는게 가장 큰 장점인것같다
자세한 사용법은 위 분의 블로그 참조!