В java это то, для чего я сначала буду использовать Retrofit с Rx Java и смогу получить наблюдаемый ответ из API следующим образом
В сервисе Retrofit Interface используйте следующий код
@GET("contacts")
Observable<Contacts> getContactsFromAPI
в орудии @Dao Room Class
@Insert(onConflict = OnConflictStrategy.REPLACE)
Completable insertContact(List<Contact> contact);
Для извлечения наблюдаемых элементов данных из API используйте следующий код
RetrofitService getContactService = RetroInstance.getService();
Observable<Contact> apiData =
getContactService.getContactsFromAPI();
compositeDisposable.add(apiData
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribeWith(new DisposableObserver<Contact>() {
@Override
public void onNext(List<Contact> contact) {
newContact(contact)
Log.d(LOG_TAG, "The contacts are : "+ contact);
}
@Override
public void onError(Throwable e) {
Log.d(LOG_TAG, "Error: "+ e.getMessage());
}
@Override
public void onComplete() {
}
}));
Чтобы добавить дополнение, извлечение из api к базе данных Room, затем создайте метод, который будет использоваться для вставки данных в базу данных Room, и этот метод был вызван для кода, написанного для получения данных из api
public void newContact(List<Contacts> contacts) {
disposable.add(Completable.fromAction(new Action() {
@Override
public void run() throws Exception {
rowIdInserted =
contactAppDatabase.userDao().insertContact(contacts);
}
}).subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribeWith(new DisposableCompletableObserver() {
@Override
public void onComplete() {
Log.d(TAG, "inserted successful");
}
@Override
public void onError(Throwable e) {
Log.d(LOG_TAG, "tHE new error on create the new user is: " +
e.getMessage());
}
}));
}
Я думаю, что справка