自定义AccountAuthenticator:身份验证令牌获取

时间:2016-02-28 16:19:05

标签: android oauth-2.0 android-authenticator

当我尝试从AccountManager获取身份验证令牌时,我需要调用

AccountManagerFuture<Bundle> getAuthToken(Account account, String authTokenType, Bundle options, Activity activity, AccountManagerCallback<Bundle> callback, Handler handler);

AccountManagerFuture<Bundle>AccountManagerCallback<Bundle>之间有什么区别?我阅读了文档,但不清楚。

P.S。也许,这是诺比的问题,但我真的无法从谷歌文档中理解它。

1 个答案:

答案 0 :(得分:1)

根据我的理解,AccountManagerCallback是一个可选的回调函,可以在通话结果准备就绪时通知您。

由于AccountManagerFuture<Bundle>没有任何机制可以在结果准备就绪时通知您,因此您必须拨打getResult()getResult(long, TimeUnit)来获取结果。由于这些调用是阻塞的,因此您需要首先生成一个新线程。文档明确声明您不能从主线程调用它们。当然,isDone()方法返回true后,在主线程上使用它们应该是安全的。

回调只接收一个AccountManagerFuture<Bundle>,它还包含结果(实际上可能与上面的对象相同),但已经完成加载。这是一种方便的方法,可以在结果准备就绪时收到通知,您可以安全地调用AccountManagerFuture.getResult()而无需等待结果,也无需自己生成线程。