【问题标题】:How to invalidate() a View from another thread?如何使来自另一个线程的视图无效()?
【发布时间】:2013-09-05 13:30:07
【问题描述】:

我有几个视图,它们由 Timer 任务每秒更新一次。他们不能invalidate() 自己,因为“只有创建视图层次结构的原始线程才能触及它的视图”。

为此有一个名为 runOnUiThread 的函数,但我需要一个 Activity 来运行它。

我该如何解决这个问题?

编辑:这是postInvalidate() 的用途吗?我如何保证失效和更新很快就会发生(如果 UI 线程不忙)?

【问题讨论】:

  • 为什么你使用定时器(和它背后的线程)来完成这样一个微不足道的任务?改用处理程序
  • @pskink 定时器正在模拟蓝牙监听线程。

标签: java android multithreading view invalidation


【解决方案1】:

1)

这是 postInvalidate() 的用途吗?

是的

According to the Docs

使用它来使来自非 UI 线程的视图无效。

invalidate() 用于更新UI Thread 上的Views

2)

我如何保证失效和更新很快就会发生 (如果 UI 线程不忙)?

也来自文档的同一部分

导致在事件循环的后续循环中发生无效

所以我想这取决于你对“很快”的定义。正如文档所说,它应该发生在下一个事件循环中

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-28
    • 1970-01-01
    • 1970-01-01
    • 2015-12-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多