我可以测试我的线程循环器是否完成了它的消息?

时间:2013-02-07 15:06:41

标签: android

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

通过致电looper启动Looper.loop()后,在您明确致电Looper.quit()之前,退出。

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

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

Semaphore semaphore = new Semaphore(0);

2-在您希望wait致电semaphore.acquire()的地方,该地点会阻止permit可用

3-完成你的looper呼叫semaphore.release()后,它将向信号量添加许可,其他等待代码将继续运行。

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

有关使用Semaphore

的代码示例,请参阅my answer here