代码之家  ›  专栏  ›  技术社区  ›  Sazzad Hissain Khan

同步调用中的Android runOnUiThread()

  •  1
  • Sazzad Hissain Khan  · 技术社区  · 6 年前

    runOnUiThread() . 问题是,这个调用是同步的还是异步的?

    如果我想在主线程中同步运行一些东西,我该怎么做?

    2 回复  |  直到 6 年前
        1
  •  3
  •   TheWanderer    6 年前

    不能“在主线程中异步运行”,因为异步逻辑不是这样工作的。对于异步的东西来说

    runOnUiThread() 将传递给主线程处理程序的Runnable。然后在下一个可用的时机在主线程上运行。

    不要把任何沉重的逻辑放在主线上。 runOnUiThread()

        2
  •  0
  •   J.Doe    6 年前

    它是异步的。它会立即返回,而不必等待您发布的任务完成运行。

    要在主线程中同步运行某些内容:

    如果你是在一个不同的线程。你需要一些同步机制。例如,可以使用信号量。在后台线程中获取一个信号量,并让您在runOnUiThread中传递的runnable在该信号量完成运行后释放它。这样,您的后台线程将等待runnable。在主线程看来,它仍然是异步的。但它在背景线程中是同步的。