后台线程如何定期更新UI

时间:2018-09-10 15:16:22

标签: android multithreading user-interface rx-java

如何正确运行后台线程或运行计时器以每1秒更新一次UI?我的意思是当活动暂停时,线程应该暂停,活动恢复的线程或计时器应该恢复,并且每秒钟必须更新UI上的数据。

1 个答案:

答案 0 :(得分:1)

您可以使用HandlerThread类创建线程,如下所示:

HandlerThread handlerThread = new HandlerThread("MyHandler");
handlerThread.start();
Looper looper = handlerThread.getLooper();
Handler handler = new Handler(looper);

然后,以这种方式启动您的可运行对象:

  handler.postDelayed(() -> {
            // runnable code here

            // call again thread after 1000 millis
            handler.postDelayed(this, 1000);
        }, 1000);
与Java中的每个类一样,

HandlerThread类继承自具有Object方法的wait()类。如果您查看文档,它将显示“导致当前线程等待,直到另一个线程为此对象调用notify()方法或notifyAll()方法。” 您应根据活动生命周期(例如在handlerThread.wait()方法内部)调用onPause()来暂停线程。请记住,恢复活动后通常在notify()方法内,在同一线程实例上调用onResume()。 完成后致电handler.removeCallbacks:)