我在我的家庭活动中有以下实现来检查是否存在authtoken,如果没有重定向到登录活动。它完成了工作,但存在问题......
方案
我是第一次启动应用程序(authtoken显然为null),confirmLogin方法(调用它总是被触发,找不到authtoken并显示登录信息......但是这样做有5-15秒的延迟这个用户在主页上再次返回登录页面。我怎样才能确定主页是否被查看为方法检查authtoken?
private void ConfirmLogin(String accountType, String authTokenType) {
@SuppressWarnings("unused")
final AccountManagerFuture<Bundle> future = mAccountManager.getAuthTokenByFeatures(accountType, authTokenType, null, this, null, null,
new AccountManagerCallback<Bundle>() {
@Override
public void run(AccountManagerFuture<Bundle> future) {
Bundle bnd = null;
try {
bnd = future.getResult();
authToken = bnd.getString(AccountManager.KEY_AUTHTOKEN);
if (authToken != null) {
String accountName = bnd.getString(AccountManager.KEY_ACCOUNT_NAME);
mConnectedAccount = new Account(accountName, AccountGeneral.ACCOUNT_TYPE);
}
else{
Intent intent = new Intent(AppHome.this, AppLogin.class);
intent.putExtra(AppLogin.ARG_ACCOUNT_TYPE, AccountGeneral.ACCOUNT_TYPE);
intent.putExtra(AppLogin.ARG_AUTH_TYPE, AccountGeneral.AUTHTOKEN_TYPE_FULL_ACCESS);
intent.putExtra(AppLogin.ARG_ACCOUNT_NAME, AccountGeneral.ACCOUNT_NAME);
startActivityForResult(intent, REQ_LOGIN);
}
} catch (Exception e) {
finish();
Log.e("Account Login terminated", e+"");
}
}
}
, null);
}