0

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

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

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

PS也许,这是一个菜鸟问题,但我真的无法从谷歌文档中理解它。

4

1 回答 1

1

据我了解,AccountManagerCallback是一个可选回调,用于在该调用的结果准备好时通知您。

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

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

于 2016-02-29T10:19:54.073 回答