java - 短时间间隔重复方法

标签 java android performance time

我有一项 Activity ,我必须每秒更新一次 View (如图像)。我尝试了几种不同的方法,发现它们可以实现相同的功能。但哪种方法最有效并减少内存泄漏?

以下是不同的方法-

方法一

final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
    public void run() {
        //DO SOMETHING
        handler.postDelayed(this, 1000);
    }
}, 1000);

方法二

ScheduledExecutorService scheduleTaskExecutor = Executors.newScheduledThreadPool(5);

scheduleTaskExecutor.scheduleAtFixedRate(new Runnable() {
    public void run() {
        //DO SOMETHING
    }
}, 0, 1, TimeUnit.SECONDS);

方法三

Timer myTimer = new Timer();
myTimer.schedule(new TimerTask() {
    @Override
    public void run() {
        //DO SOMETHING
    }
}, 0, 1000);

我应该使用哪一个?我问这个问题是因为我会在很短的时间内更新我的 GUI。

最佳答案

如果您想更新屏幕上的值或图像,您应该使用第一种方法。我使用第一种方法解决了同样的问题。

方法一

final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
    public void run() {
        //DO SOMETHING
        handler.postDelayed(this, 1000);
    }
}, 1000);

备选

Thread t = new Thread() {

    @Override
    public void run() {
        try {
            while (!isInterrupted()) {
                Thread.sleep(1000);
                    getActivity().runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                           //update here (images or other values)
                        }
                    });
                }
        } catch (InterruptedException e) {
        }
    }
};

关于java - 短时间间隔重复方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30546423/

相关文章:

javascript - Json - 具有重复数据的完整记录,或标准化

performance - 创建按 id 聚合列的变量的更快方法

尝试从 spring 连接时出现 java.lang.ClassNotFoundException : org. postgresql.Driver

java - 如何修复 Eclipse Oxygen 中的编辑器滚动滞后?

android - Espresso 中的 PreferenceMatchers

android - 在 Android 弹出窗口中输入数据

python - 为什么 C++ 比带有 boost 的 python 快得多?

java - Mybatis XML 与注解

java - 如何使用服务帐户从 App Engine 访问 Google 电子表格?

android - 对谷歌地图 api 方向的 http 请求与航路点