Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 活动仍处于打开状态时多次调用_Android - Fatal编程技术网

Android 活动仍处于打开状态时多次调用

Android 活动仍处于打开状态时多次调用,android,Android,我的活动中有一个计数器,当api中的值更改时需要更新该计数器。 我想每5秒调用一次请求,以检查api值是否已更改,并在活动打开时更新计数器 我不知道有什么方法可以让我在一段时间内提出这些请求 我在科特林的方法 private fun getTotalTrees() { disposable = viewModel.getTotalTrees().subscribeBy( onNext = { totalTrees =

我的活动中有一个计数器,当api中的值更改时需要更新该计数器。 我想每5秒调用一次请求,以检查api值是否已更改,并在活动打开时更新计数器

我不知道有什么方法可以让我在一段时间内提出这些请求

我在科特林的方法

   private fun getTotalTrees() {
        disposable = viewModel.getTotalTrees().subscribeBy(
            onNext = {
                totalTrees = it
            },
            onError = {
                Timber.e(it)
            },
            onComplete = {
                setAnimator()
            }
        )
    }

    private fun setAnimator() {
        root.tv_contador
            .setInterpolator(AccelerateInterpolator())
            .countAnimation(lastTotalTrees, totalTrees)
    }

我想要一种每隔5秒调用
getTotalTrees()
方法的方法。 但它也需要一种在我的活动结束时终止此函数的方法。 也就是说,在onStop方法中 有人能帮我吗

[编辑]

我解决了

    override fun getTotalTrees(): Flowable<Int> {
        return Flowable.just(10320) // here goes the api call 
            .repeat() // here is the magic
            .delay(3, TimeUnit.SECONDS) // delay in repeat
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())

    }
override fun getTotalTrees():可流动{
return Flowable.just(10320)//下面是api调用
.repeat()//这就是神奇之处
.delay(3,TimeUnit.SECONDS)//重复中的延迟
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
}

您可以尝试倒计时,当计时器完成后重新调用start

new CountDownTimer(5000, 5000) {

        @Override
        public void onTick(long millisUntilFinished) {

        }

        @Override
        public void onFinish() {
            start();
        }
    }.start();

尝试使用计时器。你的意思是什么?尝试
可观察。间隔
这无助于在活动打开时执行方法。在onStopAssign CountDownTimer实例到一个活动变量(“timer”,例如)之前,无法知道活动将处于活动状态多长时间,而在onStop事件上,只需调用timer.cancel()