使用 CountdownLatch 从 accountmanager 获取 Auth Token

Getting an Auth Token from accountmanager using a CountdownLatch

在向服务器发出请求之前,我试图从 Android 中的帐户获取身份验证令牌。我正在尝试使用 CountdownLatch 控制流量,以便它等到:

上下文已传递:

mContext = ...  getApplicationContext();

现在它在这两种情况中的任何一种之前退出。但是,它总是在所有其他进程完成后到达 AccountManagerCallback。奇怪的。我绝对做错了什么。 感谢您的帮助!

此解释假定发布的代码 运行ning 在主线程上。因为getAuthToken()调用中的Handler参数为null,回调也会在主线程运行。这是一个僵局。在调用 getAuthToken() 之后,主线程阻塞在闩锁 await() 上。回调不能运行 因为主线程被阻塞了。锁存器永远不会倒计时到零,因为回调不能 运行.

发布的代码 at this blog 提供了一个示例,说明如何在不阻塞的情况下在主线程上获取身份验证令牌。