我正在尝试记住用户的登录凭据,以便在他/她第一次登录应用程序之后,每次后续时间,它会自动记录他/她并开始主要活动。
现在我有两项活动: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);
}
});
}
感谢您的帮助!