我正在使用 backendless.com 作为我的后端。我有一个登录主屏幕:
主 Activity 有一个来自 backendless.com 的方法,用于确定用户是否登录。它返回一个布尔语句并放在 Activity 的 onCreate 方法中:
AsyncCallback<Boolean> isValidLoginCallback = new AsyncCallback<Boolean>()
{
@Override
public void handleResponse( Boolean response )
{
Toast.makeText(getApplicationContext(), "Logged In: " + response, Toast.LENGTH_LONG).show();
}
@Override
public void handleFault( BackendlessFault fault )
{
Toast.makeText(getApplicationContext(), "An Issue Logging In", Toast.LENGTH_LONG).show();
}
};
当应用程序启动时,布尔值为 false。然后用户登录并被带到第二个活动:
假设用户没有注销,只是关闭了应用程序。当他们重新启动它时,我需要应用程序从第二个 Activity 而不是登录屏幕开始。换句话说,是否有某种方法可以测试用户是否保持登录状态?我以为是上面的 isValidLoginCallBack 方法,但是,当我关闭应用程序并重新启动它时,布尔值再次为 false。我猜这不是测试它的正确方法。我需要一些持久的东西。有没有人有什么建议?谢谢你。
这是第一个活动的完整代码:
public class MainActivity extends AppCompatActivity {
private EditText nameInput, passwordInput, emailInput;
private Button register, login;
String name, password, email;
BackendlessUser user = new BackendlessUser();
@Override
protected void onCreate(Bundle savedInstanceState) {
//NEED METHOD TO CHECK IF USER IS LOGGED IN.
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String appVersion = "v1";
Backendless.initApp(this, "Blah", "F63A6CC8-4F6E-997D-FF88-1E6ADABFC200", appVersion);
AsyncCallback<Boolean> isValidLoginCallback = new AsyncCallback<Boolean>()//THOUGHT THIS MIGHT BE IT BUT DOES NOT PERSIST
{
@Override
public void handleResponse( Boolean response )
{
Toast.makeText(getApplicationContext(), "Logged In: " + response, Toast.LENGTH_LONG).show();
}
@Override
public void handleFault( BackendlessFault fault )
{
Toast.makeText(getApplicationContext(), "An Issue Logging In", Toast.LENGTH_LONG).show();
}
};
Backendless.UserService.isValidLogin( isValidLoginCallback );
nameInput = (EditText)findViewById(R.id.nameInput);
passwordInput = (EditText)findViewById(R.id.passwordInput);
emailInput = (EditText)findViewById(R.id.emailInput);
register = (Button) findViewById(R.id.buttonRegister);
login = (Button) findViewById(R.id.buttonLogin);
register.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
name = nameInput.getText().toString();
password = passwordInput.getText().toString();
email = emailInput.getText().toString();
user.setEmail(email);
user.setProperty("name", name);
user.setPassword(password);
Backendless.UserService.register(user, new AsyncCallback<BackendlessUser>() {
public void handleResponse(BackendlessUser registeredUser) {
Toast.makeText(getApplicationContext(), "Registered!", Toast.LENGTH_LONG).show();
}
public void handleFault(BackendlessFault fault) {
Toast.makeText(getApplicationContext(), "Not Registered!" + fault, Toast.LENGTH_LONG).show();
}
});
}
});
login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
email = emailInput.getText().toString();
password = passwordInput.getText().toString();
Backendless.UserService.login(email, password, new AsyncCallback<BackendlessUser>() {
public void handleResponse(BackendlessUser user) {
Toast.makeText(getApplicationContext(), "Logged In!", Toast.LENGTH_LONG).show();
Intent i = new Intent(MainActivity.this, ActivityTwo.class);
startActivity(i);
finish();
}
public void handleFault(BackendlessFault fault) {
Toast.makeText(getApplicationContext(), "No Name", Toast.LENGTH_LONG).show();
}
});
}
});
}}
