我想测试我的Looper是否完成了它的工作,因为我想在我的活动的所有元素都出现在屏幕上之后执行代码。我想在Looper完成工作后触发一个事件。我可以这样做吗?或者在UI中的所有元素出现在屏幕上后,是否有其他方法来执行我的代码?
通过调用Looper.loop()
启动looper
后,在显式调用Looper.quit()
之前,它不会退出。
您可以使用Semaphore
来协调您的代码,这样您就可以等到Looper完成它的工作。
1-在类中定义一个Semaphore
对象,并使用0
许可对其进行初始化,例如
Semaphore semaphore = new Semaphore(0);
2-在您想要wait
的地方调用semaphore.acquire()
,它将阻塞直到permit
可用
3-在您完成循环器调用semaphore.release()
之后,它将为信号量添加一个许可证,其他等待的代码将继续运行。
注意,如果在调用semaphore.acquire()
之前完成的活套;它将立即继续,不会阻止
关于使用Semaphore
的代码示例,请参阅此处的答案
您可以检查元素的可见性。如果它们是真的,请运行您的代码。。。。(希望我理解正确。)