RxJava + Room 를 사용해서 앱 만드는 연습중입니다.
앱 실행시 데이터베이스에 이미 저장되어있는 데이터를 가져오고 뿌려주려 하는데
값을 가져오기 전에 updateRecycler가 먼저 실행되어서
concat으로 묶어서 해결을 해봤는데요.....
이게 맞나 싶어서 질문드립니다....
계속 공부중 얕은 지식으로 혼란스러워 피드백 부탁드립니다....
RxJava 를 적용하기 전에 사용한 코드입니다.
여기선 allowMainThreadQueries()를 사용해서 강제로 실행시켰습니다.
//List<Notes> notes에 데이터 가져오기, "SELECT * FROM notes"
notes=database.mainDao().getAll();
//가져온 notes를 setAdapter 갱신
updateRecycler(notes);
비동기를 위해 RxJava를 적용시키려고 Flowable로 지정하고 concat으로 합친 코드입니다...
Flowable<List<Notes>> source1 = database.mainDao().getAll();
Flowable<List<Notes>> source2 = Flowable.just(notes);
Flowable.concat(source1, source2)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(item -> updateRecycler(item));
DB 데이터 검색은 양이 많을 것을 생각해서 Flowable로 지정했습니다.