如果我需要在 Activity 可见时每秒更新一次 UI 组件(比如 textview)。您会建议创建一个执行 postOnUi 调用的线程(使用 thread.sleep)还是我使用带有 postDelayed 的处理程序?
如果我有多个 TextView ,我不确定哪个会更有效率
谢谢?
最佳答案
我认为您混淆了一些概念。 Handler
的 postDelayed()
确实会在一段时间后运行 Runnable
,但只会运行一次。
对于您想做的事情,您有多种选择:
- 休眠
Thread
就是其中之一。这样做的一个缺点是Thread
可能会导致异常,这样您的执行就会变得不稳定。此外,您将只有一个Thread
,即使它处于休眠状态也不会释放它,因此您正在使用一次可能不需要的资源。 - 另一种方法是使用
AsyncTask
。但是,对于短期任务,建议这样做。如果您计划长时间运行此任务,AsyncTask
可能不是一个好的选择。 - 您可以使用
Handler
运行后台Service
来更新UI。取决于您要实现的目标。 - 您可能想看看
ScheduledExecutorService
。它有一个名为scheduleAtFixedRate()
的方法,它会执行此操作,每 X 次执行一个参数指定的Runnable
。更多信息 here .
关于android - PostDelayed 或 Thread with thread.sleep(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28073207/