我正在实现android AccountManager,一切正常,除了mAccountManager.getAuthToken()函数,获取令牌需要太长时间。这是我用来获取令牌的代码。
final AccountManagerFuture<Bundle> future = mAccountManager.getAuthToken(account, AccountTags.AUTHTOKEN_TYPE_READ_ONLY_ACCESS, null, activity, null, null);
Thread t = new Thread(new Runnable() {
@Override
public void run() {
try {
Bundle bnd = future.getResult();
final String authtoken = bnd.getString(AccountManager.KEY_AUTHTOKEN);
Log.d("TangoAccounts", "GetToken Bundle is " + bnd);
SingeltonToken.getInstance().setToken(authtoken);
} catch (Exception e) {
e.printStackTrace();
}
}
});
t.start();
try {
t.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
问题不在于服务器连接,因为它在本地网络上,并且所有其他对服务器的请求都需要不到一秒的时间来完成甚至帐户管理员的登录请求只需不到一秒钟,但是当我在首次登录后调用getAuthToken之后大约需要2分钟才能完成。我在调用getAuthToken之前尝试使authToken失效,但它仍然需要花费太多时间。我试过调试,发现代码卡在这一行
Bundle bundle = future.getResult();