PostDelayed或Thread with thread.sleep()

时间:2015-01-21 17:23:20

标签: android

如果我需要每秒更新UI组件(如textview),只要活动可见即可。你会建议创建一个执行postOnUi调用的线程(使用thread.sleep)或者我是否使用postDelayed处理程序?

如果我有多个textviews

,我不确定哪个更有效率

感谢?

1 个答案:

答案 0 :(得分:2)

我认为你在混淆一些概念。 Handler的{​​{1}}确实会在一段时间过后运行postDelayed(),但只会运行一次。

对于你想做的事,你有几个选择:

  • 睡觉Runnable就是其中之一。不利于此,Thread可能会导致异常,这样您的执行可能会变得不稳定。此外,您只有一个Thread即使它正在睡觉也不会释放它,因此您正在使用一次可能不需要的资源。
  • 另一种方法是使用Thread。但是,对于简短的任务,建议使用此方法。如果您计划在较长一段时间内运行此任务,AsyncTask可能不是一个好的选择。
  • 您可以使用AsyncTask运行后台Service来更新用户界面。取决于你想要达到的目标。
  • 你可能想看看Handler。它有一个名为ScheduledExecutorService的方法,它将完全执行该操作,在其中一个参数指定的每个X时间内执行scheduleAtFixedRate()。更多信息here