Android 如何 运行 线程每 25 毫秒?
Android how to run thread for each 25 ms?
我试着运行一个接一个地穿线。它们之间的延迟必须固定为 25 毫秒。你有什么建议吗? Android这么频繁更新可以吗?
我已尝试 handler.post
并在线程内调用 handler.post
。但它没有用。在那之后,我尝试了timer.schedule
。尽管 timer.schedule 效果很好,但并不总是 return 准确的时间。
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);
正如我之前所说,计时器 return 通常会准时,但有时会 return 迟到。
Executors.newSingleThreadScheduledExecutor().scheduleAtFixedRate(/* Your Runnable */, 0, 25, TimeUnit.MILLISECONDS);
或者 RxJava:
Flowable.interval(0, 25, TimeUnit.MILLISECONDS).subscribe(/* Code to execute */);
我试着运行一个接一个地穿线。它们之间的延迟必须固定为 25 毫秒。你有什么建议吗? Android这么频繁更新可以吗?
我已尝试 handler.post
并在线程内调用 handler.post
。但它没有用。在那之后,我尝试了timer.schedule
。尽管 timer.schedule 效果很好,但并不总是 return 准确的时间。
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);
正如我之前所说,计时器 return 通常会准时,但有时会 return 迟到。
Executors.newSingleThreadScheduledExecutor().scheduleAtFixedRate(/* Your Runnable */, 0, 25, TimeUnit.MILLISECONDS);
或者 RxJava:
Flowable.interval(0, 25, TimeUnit.MILLISECONDS).subscribe(/* Code to execute */);