首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >运行一个方法5秒

运行一个方法5秒
EN

Stack Overflow用户
提问于 2022-02-23 12:52:26
回答 1查看 40关注 0票数 1

我想在5秒内每隔1ms运行一次方法。现在我在用

代码语言:javascript
复制
long t = System.currentTimeMillis();
long end = t + 5000;
while (System.currentTimeMillis() < end) {
    // do something
    // pause to avoid churning
    try {
        Thread.sleep(1000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
}

这段代码的问题在于它在5秒的时间内冻结了UI。我不感兴趣。是否可以使用可运行或处理程序,然后在5秒后终止?致以问候!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-23 13:20:12

您可以递归地使用Handler#postDelayed

代码语言:javascript
复制
private void doTask(long endTimeMillis) {

    // do something

    long now = System.currentTimeMillis();
    if (now < endTimeMillis) {
        new Handler(Looper.getMainLooper()).postDelayed(() -> {
            doTask(endTimeMillis);
        }, 1L);
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71237295

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档