我在用户登录时将用户ID存储在SharedPreferences中 如果SharedPreferences中的id不为null,我检查用户何时打开应用程序,以便应用程序打开其主屏幕,而不要求用户再次登录。此外,当用户注销时,我从SharedPreferences中删除了他的id。 但是,当用户注销并尝试从最近的应用程序打开应用程序时,应用程序将打开其主屏幕,而不会要求用户再次登录。 但是当用户按下并重新打开应用程序时,应用程序将要求用户再次登录,因此我确信SharedPreferences已成功删除,但我不知道最近的应用程序列表有什么问题!< / p>
这是我的代码:
启动画面:
public class SplashActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SharedPreferencesManager prefs = SharedPreferencesManager.getInstance(getApplicationContext());
Intent intent;
if (prefs.getUserId() != null) {
intent = new Intent(SplashActivity.this, mainscreen.class);
} else {
intent = new Intent(SplashActivity.this, SignIn.class);
}
startActivity(intent);
finish();
}
}
SharedPreferencesManager:
public class SharedPreferencesManager {
private static SharedPreferencesManager sharedPreferencesManager = new SharedPreferencesManager();
private static SharedPreferences sharedPreferences;
private static SharedPreferences.Editor editor;
private static final String NAME = "General";
public static SharedPreferencesManager getInstance(Context context) {
if (sharedPreferences == null) {
sharedPreferences = context.getSharedPreferences(NAME, Activity.MODE_PRIVATE);
editor = sharedPreferences.edit();
}
return sharedPreferencesManager;
}
public void setUserId(String ID){
editor.putString("UserID", ID).commit();
}
public String getUserId(){
return sharedPreferences.getString("UserID", null);
}
public void removeUserId(){
editor.remove("UserID").commit();
}
}
注销:
public void logout(){
SharedPreferencesManager prefs = SharedPreferencesManager.getInstance(getApplicationContext());
prefs.removeUserId();
Intent intent = new Intent(this, SignIn.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
}
谢谢!
答案 0 :(得分:3)
你应该在你的Main活动中覆盖onResume方法,如下所示:
@Override
public void onResume(){
super.onResume();
SharedPreferencesManager prefs = SharedPreferencesManager.getInstance(getApplicationContext());
Intent intent;
if (prefs.getUserId() == null) {
intent = new Intent(MainActivity.this, SignIn.class);
}
startActivity(intent);
}
答案 1 :(得分:0)
不是删除值而是将值设置为null。
public void removeUserId(){
editor.putString("UserID", null).commit();
}
希望这对你有用。