[英]Making the UI thread to wait untill the service is finished in android
大家好,我有一个问题,我想让 UI 线程等到服务完成,谁能告诉我如何实现这个?
一种解决方案:
教程关键词:
希望能帮助到你
我可以告诉你,你永远不应该让 UI 线程等待:
总而言之,保持 UI 线程畅通对应用程序 UI 的响应能力至关重要。
这来自无痛线程的 Android 开发人员页面,您应该完整阅读。 你到底想做什么?
我将假设您已经正确设置了与您的 Activity 通信的服务设置。
您可以使用Semaphore
在服务执行时阻塞 UI 线程。 有很多方法可以做到这一点,但为了简单起见,这个Semaphore
可以是实用程序 class 中的 static 字段。
public class UtilityClass {
public static final Semaphore LOCK = new Semaphore(0);
}
在您的 UI 线程中,您可以执行以下操作: UtilityClass.LOCK.acquire()
在您的服务中,完成后您将释放锁: UtilityClass.LOCK.release()
请记住,可能需要进行更多检查以确保此方法中没有错误。 您将需要查看Semaphore
文档。 例如,在发布许可证之前,您可能需要检查是否有零个availablePermits()
我认为这可以回答您的问题,但请注意,阻塞 UI 线程会导致应用程序无响应。 换句话说,这种方法不是最佳实践,应该避免。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.