如何在应用加载时检查共享首选项?

时间:2014-04-13 19:59:24

标签: android login android-asynctask android-activity sharedpreferences

我正在尝试记住用户的登录凭据,以便在他/她第一次登录应用程序之后,每次后续时间,它会自动记录他/她并开始主要活动。

现在我有两项活动:Login活动和Main应用程序活动。当用户键入他/她的凭据时,它会根据AsyncTask中的服务器上的数据库对其进行验证。现在我使用Shared Prefs存储用户名和密码,每次启动应用程序时我都想读取这些首选项。如果它们为空,则打开登录活动/屏幕,否则打开主活动/屏幕。

这有效......但是在打开Main活动之前大约需要3-5秒。所以它从Login活动开始,然后在3-5秒后进入Main活动。以下代码在Login活动....我应该把它放在哪里,除非prefs为空,否则它不会打开Login活动?

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.user_login);

    //keep screen on while activity is running
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

    // Importing all assets like buttons, text fields
    inputEmail = (EditText) findViewById(R.id.loginEmail);
    inputPassword = (EditText) findViewById(R.id.loginPassword);
    btnLogin = (Button) findViewById(R.id.btnLogin);
    btnLinkToRegister = (Button) findViewById(R.id.btnLinkToRegisterScreen);
    loginErrorMsg = (TextView) findViewById(R.id.login_error);

    //get username and password from preferences if they exist
    sharedPrefs = getSharedPreferences(PREFERENCES, getApplicationContext().MODE_PRIVATE);

    if (sharedPrefs.contains(UserId) && sharedPrefs.contains(Password))
    {
        inputEmail.setText(sharedPrefs.getString(UserId, ""));
        inputPassword.setText(sharedPrefs.getString(Password, ""));

        new MyAsyncTask().execute(sharedPrefs.getString(UserId, ""),    
                                  sharedPrefs.getString(Password, ""));
    }

    // Login button Click Event
    btnLogin.setOnClickListener(new View.OnClickListener() {

        public void onClick(View view) {
            String email = inputEmail.getText().toString();
            String password = inputPassword.getText().toString(); 

            Editor editor = sharedPrefs.edit();
            editor.putString(UserId, email);
            editor.putString(Password, password);
            editor.commit();

            new MyAsyncTask().execute(email, password);
        }
    });
}

感谢您的帮助!

0 个答案:

没有答案