当前位置: 首页 > 知识库问答 >
问题:

RxJava可观察问题

商池暝
2023-03-14

在android 6.0.1 Samsung s6 Edge+上的测试

当device screen脱机并从debug中拔出时,可观察到的只是停止发射项目。如果设备打开,则开始发射对象。另一个问题是,在停止接收项目之前,我会按照相同项目的顺序随机地得到2/3个重复调用

Observable.interval(4000,
            30000, TimeUnit.MILLISECONDS)
            .subscribeOn(Schedulers.newThread())
            .observeOn(AndroidSchedulers.mainThread())
            .doOnError(ErrorResponse.handleError()).subscribe(new Action1() {
                        @Override
                        public void call(Object o) {
                            statusSender.doNetworkCallAndGetStringResult();
                        }
                    });

____________________________edit____________________________________________________________________________________________________

做另一个帖子给更多的细节。我不能给你完整日志,但我会更好地解释我做了什么,以确保问题是可观察的。

以下

https://github.com/amitshekhariitbhu/rxjava2-android-samples/blob/master/app/src/main/java/com/rxjava2/android/samples/ui/operators/intervalexampleactivity.java

isposables.add(statusSender.getObservable(certificate)
                    .subscribeOn(io.reactivex.schedulers.Schedulers.io())
                    .observeOn(io.reactivex.android.schedulers.AndroidSchedulers.mainThread())
                    .subscribeWith(getObserver()))
return io.reactivex.Observable.interval(INITIAL_DELAY,Utilities.getInstance().getHeartbeatFrequency(),TimeUnit.MILLISECONDS);
private DisposableObserver<Long> getObserver() {
    return new DisposableObserver<Long>() {

        @Override
        public void onNext(Long value) {
            Log.d(TAG, " onNext : value : " + value);
            statusSender.doNetworkCallAndGetStringResult();
        }

        @Override
        public void onError(Throwable e) {
            Log.d(TAG, " onError : " + e.getMessage());
        }

        @Override
        public void onComplete() {
            Log.d(TAG, " onComplete");
        }
    };
}

共有1个答案

柯清野
2023-03-14

当device screen脱机并从debug中拔出时,可观察到的只是停止发射项目。

这是Android的预期行为:设备会暂停你的活动,并切换到低功耗模式以节省电池。如果你需要在后台做一些事情,你需要创建一个服务,通过Android特定的计时器请求唤醒,并请求特殊的许可来保持设备在你的清单中(我想,这已经有一段时间了)。

 类似资料:
  • 我正在尝试开发我的第一个RxJava例子 我有一个带有文本框和三个按钮的主要活动。第一个按钮初始化单独类中的整数。第二个按钮订阅一个可观察量,该可观察量假定正在观察整数。第三个按钮将整数的值减小 1。 这是我的密码 和班级 当我尝试使用 订阅时,它只是给了我 的值(即 6),然后它给了我完成! 然后我尝试使用,认为我需要使用,只是而不是,但后来我得到了一个返回的空的,然后再次完成! 有人能帮助我从

  • 问题内容: 给定汽车清单(),我可以这样做: 有没有办法我可以从一个到一个序列? 像没有参数的东西 问题答案: 您可以这样映射到: 请注意,flatMapping可能不会保留源可观察的顺序。如果订单对您很重要,请使用。

  • 我做了一个RxJava2实验,包括以下步骤: 从对象列表创建一个可观察对象。 使用EquiMapSing()将可观察对象发出的每个项目映射到SingleSource。在平图单()中,对可观察对象发出的每个项目执行异步操作。 收集ListB中的所有项目,使用Observable.toList() 结果:由于异步操作,ListB的项目顺序与ListA不同。 因此,flatMapSingle()的工作原

  • 我正在从事一个涉及Hystrix的项目,我决定使用RxJava。现在,忘记Hystrix的其余部分,因为我相信主要问题是我完全搞砸了正确编写可观察代码。 需要:我需要一种方法来返回一个代表多个可观察对象的可观察对象,每个可观察对象都运行一个用户任务。我希望该可观察对象能够返回任务的所有结果,甚至错误。 问题:可观测流会因错误而消亡。如果我有三个任务,而第二个任务引发了一个异常,那么即使第三个任务成

  • 假设我有一个返回列表的博客帖子api 从列表创建可观察 将每个可观察拆分为

  • 我在创建一个将返回对象列表的可观察对象时遇到了麻烦。我有一个ID列表,想对我的数据库提出一个请求。在这种情况下,我使用的是Firebase。当得到一个结果时,我希望将这些对象中的每一个编译成一个列表,然后返回该列表。我需要在返回之前等待所有的对象都返回。我在我的视图模型反序列化器类中这样做。这是我的代码。 有几种方法可以从firebase数据库中返回数据,我可以返回Documentsnapshot