Android 如何在检查用户是否登录时停止活动的启动?

Android 如何在检查用户是否登录时停止活动的启动?,android,accountmanager,Android,Accountmanager,当用户启动我的应用程序时,我尝试实现以下目标: 1-如果用户未登录,则显示登录屏幕。 2-如果用户已经创建了一个帐户,并且有一个有效的令牌,则显示开始屏幕 为此,我根据这里的教程实现了一个自定义验证器 代码是有效的,我的问题是它简要地显示了当前的活动UI,然后切换到我的AccountAuthenticator提供的添加帐户UI。我怎样才能解决这个问题 代码如下: @Override public void onStart(){ super.onStart(); getTok

当用户启动我的应用程序时,我尝试实现以下目标:

1-如果用户未登录,则显示登录屏幕。 2-如果用户已经创建了一个帐户,并且有一个有效的令牌,则显示开始屏幕

为此,我根据这里的教程实现了一个自定义验证器

代码是有效的,我的问题是它简要地显示了当前的活动UI,然后切换到我的AccountAuthenticator提供的添加帐户UI。我怎样才能解决这个问题

代码如下:

   @Override
public void onStart(){
    super.onStart();
    getTokenForAccountCreateIfNeeded(AccountGeneral.ACCOUNT_TYPE,    AccountGeneral.AUTHTOKEN_TYPE_FULL_ACCESS);


}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    mAccountManager = AccountManager.get(this);
}


  /**
 * Get an auth token for the account.
 * If not exist - add it and then return its auth token.
 * If one exist - return its auth token.
 * If more than one exists - show a picker and return the select account's auth token.
 * @param accountType
 * @param authTokenType
 */
private void getTokenForAccountCreateIfNeeded(String accountType, String authTokenType) {
    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();
                        final String authtoken = bnd.getString(AccountManager.KEY_AUTHTOKEN);
                        showMessage(((authtoken != null) ? "SUCCESS!\ntoken: " + authtoken : "FAIL"));


                    } catch (Exception e) {
                        e.printStackTrace();
                        showMessage(e.getMessage());
                    }
                }
            }
    , null);
}

强制我的用户在应用程序开始时登录。我根据这里的教程实现了一个自定义验证器

由于您的身份验证方法是异步的,因此无法阻止UI显示。我将实现一个路由器/Splashscreen活动,该活动检查身份验证状态,然后启动登录活动或用户看到的实际活动(如果用户已登录)。确保在清单中将路由器活动设置为nohistory

如果您想将其保留在单个活动中,那么您的布局中应该有一个全屏加载指示器,该指示器位于UI顶部,一旦您确定要显示哪个布局,该指示器就会消失