【发布时间】:2020-07-09 14:43:56
【问题描述】:
我正在开发像 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 操作员处理两个数据源,但在互联网上我只从远程获取数据,而没有从本地获取。
我知道它由 RXJava 运算符处理,但我不知道哪个特定的运算符可以帮助我。
【问题讨论】:
标签: caching retrofit2 android-room rx-java2 repository-pattern