Nano Hash - криптовалюты, майнинг, программирование

Изменение AsyncTask на Rxjava

У меня возникла проблема с преобразованием процесса AsyncTask doInBackground в RxJava. Я хотел бы знать, как преобразовать это в Rx Java, поскольку ничто из того, что я пробовал, не работает.

new AsyncTask<Void, Void, Integer>() {
            @Override
            protected Integer doInBackground(Void... voids) {

                return mDAO.getCount();
            }

            @Override
            protected void onPostExecute(Integer count) {
                if (count == 0)
                    mCount.setText("All Notifications");
                else
                    mCount.setText("New Notificaiton "+count);
            }
        }.execute();

И я попробовал это для Rx

Observable<Integer> count = Observable.fromCallable(new Callable<Integer>() {
            @Override
            public Integer call() throws Exception {
                return mDAO.getCount();
            }
        })
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread());
        count.subscribe(new Observer<Integer>() {
            @Override
            public void onSubscribe(Disposable d) {
                mDisposable.add(d);
            }

            @Override
            public void onNext(Integer integer) {
                if (integer == 0)
                    mCount.setText("All Notifications");
                else
                    mCount.setText("New Notification "+count);

            }

            @Override
            public void onError(Throwable e) {

            }

            @Override
            public void onComplete() {

            }
        });

Я получаю это вместо количества

Count io.reactivex.internal.operators.observable.ObservableObserveOn@5ccee5b

Как мне это решить? Спасибо.


Ответы:


1

Ваша реализация - это то, почему у вас есть эта ошибка. Вместо этого вы должны использовать один вызываемый объект. Это должно работать на 100%, и дайте мне знать, если у вас возникнут какие-либо проблемы с этим.

Single.fromCallable(new Callable<Integer>() {
            @Override
            public Integer call() throws Exception {
                return mDAO.getCount();
            }
        })
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .doOnSuccess(new Consumer<Integer>() {
                    @Override
                    public void accept(Integer integer) throws Exception {
                        if (integer == 0)
                            mCount.setText("All Notifications");
                        else
                            mCount.setText("New Notification "+integer);
                    }
                })
                .doOnError(new Consumer<Throwable>() {
                    @Override
                    public void accept(Throwable throwable) throws Exception {

                    }
                })
                .subscribe();
07.07.2019
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..