信号量阻塞线程但不会释放它

时间:2018-03-24 17:39:31

标签: java android concurrency semaphore

基本上这里的想法是等到服务器发送访问令牌,否则资源正在加载旧的和应用程序粉碎。但是在getAccessToken()异步请求中获取令牌并使用waitUntiAccessTokenIsObtained.release()释放许可后,主线程仍然被阻止。 waitUntiAccessTokenIsObtained.acquire()放置在MainActivity的{​​{1}}方法中。我错过了什么?

onCreate

1 个答案:

答案 0 :(得分:1)

永远不要等待主线程上的信号量。主线程不得因任何原因而延迟。这样做会使您的应用程序显示无响应(不会处理绘制命令),并最终启动一个会杀死您的应用程序的监视程序计时器。在您的数据可用之前,请设置加载屏幕。