Я работаю над социальным приложением, например Instagram и LinkedIn , и я не понимаю, как управлять несколькими источниками данных (roomLocalDataSource
, remoteDataSource
).
Я хочу загружать данные непосредственно из roomLocalDataSource
после открытия приложения и отображать их в RecyclerView
, если они существуют, также получать данные из remoteDataSource
и при успехе показывать кнопку пользователю для отображения новых сообщений, например, механизм происходит в Instagram и LinkedIn ,
Вот мой RemoteDataSource
:
public Single<List<Movie>> getMoviesFromRemote() {
return moviesApiService.getMovies();
}
Вот мой RoomLocalDataSource
:
public Single<List<Movie>> getMoviesFromLocal() {
return moviesDao.getMovies();
}
Вот мой MoviesDao
:
@Query("SELECT * FROM movies)
Single<List<Movie>> getMovies();
Вот мой MoviesApiService
:
@GET("movies")
Single<List<Movie>> getMovies();
Вот мой MoviesRepository
:
public List<Movie> getMovies() {
// Here i will get data using (roomLocalDataSource, remoteDataSource) and send to viewModel
}
Я пробовал оператор concat
для обработки двух источников данных, но rnet я получаю данные только с удаленного устройства, а не с локального.
Я знаю, что вызов будет обрабатываться операторами RX Java но я не знаю, какой именно оператор c может мне помочь в моем случае.