java - 如何在延时后执行某个方法?

标签 java android

我有一个这样的类 Render:

public class Render {
    private Timer timer;
    private TimerTask timerTask;


    @Override
    public void refresh() {
        if (timerTask != null)
            timerTask.cancel();
        timerTask = new LoadTask();
        timer.schedule(timerTask, 1000);
    }

    private class LoadTask extends TimerTask {
        @Override
        public void run() {
            //request the server
        }
    }
}

refresh 方法可能会被调用的很频繁,但是refresh 里面要做的工作有点繁重,它必须向服务器请求一些东西,所以我试图让这个方法在延迟后执行。

但是如图所示,调用此方法后将创建一个新的 LoadTask 实例,这在 android 中是否浪费内存?

所以我想知道是否有解决办法?

最佳答案

你将尝试这个来延迟执行任务

    Handler handler = new Handler();
            handler.postDelayed(new Runnable() {

                @Override
                public void run() {
                //Your task it will execute at 1 time only...

                }
            }, 5000);//5 seconds delay and you can change the delay  time...

它会像循环函数一样每隔 10 秒执行一次线程...

Timer timer = new Timer();
        timer.scheduleAtFixedRate(new TimerTask() {

            @Override
            public void run() {
                //Your logic it will repeating you task ever 10 seconds....

            }
        }, 5000, 5000);

关于java - 如何在延时后执行某个方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22757434/

相关文章:

java - 具有多个可拉伸(stretch)区域的 Libgdx 9 补丁

java - hibernate 中的 CRUD 给出表未映射异常

java - Autowiring 类返回空值

java - 我们可以在LinkedHashSet中的固定点插入元素吗?

android - 连接到android中的蓝牙耳机

Android Canvas 到位图

java - 你能从你的程序中检查你的操作系统和 java 运行时是 32 位还是 64 位吗?

java - 单击按钮时,如何将文本从警报对话框的 EditText 复制并粘贴到我的 Activity 的 EditText?

android - 如何使用 `weight` 修饰符创建可组合函数?

android - 64 位 android,32 位应用程序与 32 位 native 库