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