首页 > 解决方案 > android中的计时器类还是处理程序计时器?

问题描述

Android 计时器类和使用 Handler 创建一个有什么区别?

我尝试了两种方法,我知道它们可以做不同的事情,但我不知道为什么,例如使用 android 计时器类我无法更新视图,我认为这是一个巨大的限制,但使用处理程序时代码感觉很乱。

   Handler handler = new Handler();
   handler.postDelayed(new Runnable() {
       public void run() {
           //actions
       }
   }, 2000);   

}

那么,每隔几秒做一个动作最好是什么?

编辑:这不是重复的,因为我询问有关使用计时器更新视图的问题。

标签: javaandroid

解决方案


android.os.Handler是 Android 框架的一部分,如果您在 UI 或主线程中创建了 Handler,则作业将在 UI 或主线程上执行。请注意,在 Android 中,您只能从 UI 线程更新视图。

java.util.Timer另一方面将在另一个线程上执行,因此它无法更新视图。

所以这里推荐使用Handler。如果你真的想使用 Timer,你必须使用runOnUiThread

new Timer().schedule(new TimerTask() {
    @Override
    public void run() {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                //this will run on UI thread so you can update views here
            }
        });
    }
}, 2000, 2000);

推荐阅读