기존에 많이 사용하던 AsyncTask가 deprecated되었다. Rxjava로 이를 대체해보자.
먼저 implementation을 해준다.
implementation 'io.reactivex.rxjava3:rxandroid:3.0.0'
implementation 'io.reactivex.rxjava3:rxjava:3.0.7'
Disposable backgroundTask;
// backgroundTask를 실행하는 메소드
private void sampleMethod() {
// task에서 반환할 Hashmap
HashMap<String, String> map = new HashMap<>();
//onPreExecute(task 시작 전 실행될 코드 여기에 작성)
backgroundTask = Observable.fromCallable(() -> {
//doInBackground(task에서 실행할 코드 여기에 작성)
return map;
}).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Consumer<HashMap<String, String>>() {
@Override
public void accept(HashMap<String, String> map) {
//onPostExecute(task 끝난 후 실행될 코드 여기에 작성)
backgroundTask.dispose();
}
});
}