#android-sqlite #retrofit2 #rx-java2
Вопрос:
получение данных с сервера с помощью модифицированного RxJava и сохранение в SQLite, все задачи должны выполняться в другом потоке (не внутри основного потока). после завершения выборки и сохранения данные будут отображаться в графическом интерфейсе (основной поток).
Observablelt;Responselt;Listlt;Citygt;gt;gt; cityObservable = ApiClient.getApiService().getCity1(); cityObservable .observeOn(AndroidSchedulers.mainThread()) .subscribeOn(Schedulers.newThread()) .doOnNext(new Consumerlt;Responselt;Listlt;Citygt;gt;gt;() { @Override public void accept(Responselt;Listlt;Citygt;gt; listResponse) throws Exception { Log.e(TAG, "accept: " Thread.currentThread() " " listResponse.body().size()); } }) .subscribe(new Observerlt;Responselt;Listlt;Citygt;gt;gt;() { @Override public void onSubscribe(@NonNull Disposable d) { Log.e(TAG, "onSubscribe: " Thread.currentThread()); } @Override public void onNext(@NonNull Responselt;Listlt;Citygt;gt; response) { if (response != null) { Log.e(TAG, "onNext: " response.code() " " Thread.currentThread()); for (City city : response.body()) { names.add(city.getName()); } arr = new ArrayAdapterlt;Stringgt;( MainActivity.this, R.layout.support_simple_spinner_dropdown_item, names); listView.setAdapter(arr); } else { Log.e(TAG, "onNext: null"); } } @Override public void onError(@NonNull Throwable e) { progressBar.setVisibility(View.GONE); if (e instanceof HttpException) { Log.e(TAG, "onError: " ((HttpException) e).code()); } else { // This is another exception, like invalid JSON, etc. Log.e(TAG, "onError: ", e); } } @Override public void onComplete() { progressBar.setVisibility(View.GONE); Log.e(TAG, "onComplete: " Thread.currentThread()); } });
здесь я могу извлекать данные с сервера, но не могу сохранить их в бд из фонового потока (хотя внутри onNext() я могу сохранить их в бд, но они будут выполняться в основном потоке) моя цель -gt; в каком потоке API вызывается RxJava в том же потоке или параллельно другой поток должен использоваться для сохранения извлеченных данных в БД SQLite