2

我想测试我的 Looper 是否完成了它的工作,因为我想在我的活动的所有元素都在屏幕上之后执行代码。我想在 Looper 完成工作后触发一个事件。在 UI 中的所有元素都出现在屏幕上之后,我可以这样做还是有其他方法来执行我的代码?

4

2 回答 2

1

一旦你looper通过调用Looper.loop()它开始它不会退出,直到你显式调用Looper.quit().

你可以用它Semaphore来协调你的代码,这样你就可以等到 Looper 完成它的工作。

1-在您的类中定义一个对象并使用许可Semaphore对其进行初始化,例如0

Semaphore semaphore = new Semaphore(0);

2-在您要wait呼叫的地方semaphore.acquire(),这将阻塞直到permit可用

3-完成循环调用后semaphore.release(),这将向信号量添加一个许可,其他等待代码将继续运行。

注意,如果 looper 在semaphore.acquire()调用之前完成;它会立即继续,不会阻塞

有关使用的代码示例,请在此处查看我的答案Semaphore

于 2013-02-11T02:47:58.517 回答
0

您可以检查元素的可见性。如果他们是真的,运行你的代码....(希望我理解正确。)

于 2013-02-07T15:08:22.800 回答