[안드로이드] Rxjava로 AsyncTask 대체하기

기존에 많이 사용하던 AsyncTask가 deprecated되었다. Rxjava로 이를 대체해보자.

먼저 implementation을 해준다.

implementation 'io.reactivex.rxjava3:rxandroid:3.0.0'
implementation 'io.reactivex.rxjava3:rxjava:3.0.7'

Rxjava의 backgroundTask를 이용하는 방법은 아래와 같다.
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();
            }
       });
}

좋은 웹페이지 즐겨찾기