Android如何每25毫秒运行一次线程?

时间:2019-04-04 21:12:46

标签: android timertask android-handler

我尝试一个接一个地运行线程。它们之间的延迟必须固定为25 ms。你有什么建议吗?可以如此频繁地更新Android吗?

我尝试了handler.post并在线程内调用handler.post。但这没有用。之后,我尝试了timer.schedule。尽管timer.schedule效果很好,但它并不总是返回准确的时间。

long startTime,delay,nextThread =25;
...
timer.schedule(new TimerTask() 
{
    @Override
    public void run() {
        startTime = System.currentTimeMillis();
        /*
            do something and show on UI;
        */
        delay = (System.currentTimeMillis() - startTime);
             if(delay<0)
                 delay=0;
             nextThread = 25 - delay;
             if (nextThread<0)
                 nextThread=0;
    }
},0,nextThread);

正如我之前说的,计时器通常按时返回,但有时它会延迟返回。

1 个答案:

答案 0 :(得分:0)

使用ScheduledExecutorService

Executors.newSingleThreadScheduledExecutor().scheduleAtFixedRate(/* Your Runnable */, 0, 25, TimeUnit.MILLISECONDS);

或RxJava:

Flowable.interval(0, 25, TimeUnit.MILLISECONDS).subscribe(/* Code to execute */);