android - PostDelayed 或 Thread with thread.sleep()

标签 android

如果我需要在 Activity 可见时每秒更新一次 UI 组件(比如 textview)。您会建议创建一个执行 postOnUi 调用的线程(使用 thread.sleep)还是我使用带有 postDelayed 的处理程序?

如果我有多个 TextView ,我不确定哪个会更有效率

谢谢?

最佳答案

我认为您混淆了一些概念。 HandlerpostDelayed() 确实会在一段时间后运行 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/

相关文章:

java - 为什么我在 .setOnTouchListener() 上遇到 nullpointerException?

java - firebase 更新用户信息时出错

java - 我如何每 10 秒显示一个字符串中的一个随机单词?

android - 在 onDestroy() 上从 View 中解除绑定(bind)可绘制对象

android - 使用 Project Astoria 转换 Kotlin Android 应用程序

android - 单击 float 操作栏时未加载新 Activity

android - 传递有条件的值?

java - 无法使用 getApplicationInfo 从名称获取子包

Android布局按钮在水平线性布局中低于其他按钮

java - Intent为什么要实现Cloneable?