Android AccountManager 帐号管理(一)分享了如何将自己的帐号体系注册到系统服务AccountManagerService,统一由AccountManager来管理,这仅是自己的一点理解;但开发者对接的工作远不止如此,还有用户登录完成后如何将帐号添加到系统数据库中等等,AccountManager都有提供相对应的接口
在说接口之前,先看一下AccountManager会用到的两个接口类
一个是android.accounts.AccountManagerFuture
AccountManagerFuture类似于java的Future,提供了对AccountManager任务的执行进行取消,查询是否已经被取消,是否完成以及获取执行结果,通过getResult方法获取执行结果,该方法会阻塞直到任务返回结果
public interface AccountManager<V> {
/**取消任务的执行
如果任务已经完成/已经取消/不能被取消,则返回false
*/
boolean cancel(boolean mayInterruptIfRunning);
/**任务是否被取消
如果任务在完成之前被取消,则返回true
*/
boolean isCancelled();
/**任务是否完成
*/
boolean isDone();
/**获取任务的执行结果
这个接口可能会阻塞当前线程,直到任务完成/任务被cancel,故不要在主线调用此接口
*/
V getResult() throws OperationCanceledException, IOException, AuthenticatorException;
/**同上
参数规定了等待的时间timeout,如果超时,则会直接被cancel
*/
V getResult(long timeout, TimeUnit unit) throws OperationCanceledException, IOException, AuthenticatorException;
}
另一个是android.accounts.AccountManagerCallback
AccountManagerCallback,即AccountManager接口的回调,可在主线程执行
public interface AccountManagerCallback<V> {
void run(AccountManagerFuture<V> future);
}