嗨,我有一个应用程序,即使应用程序被销毁,也严格要求“登录”。如果应用程序被销毁,则稍后重新加载(如果先前已登录)应该绕过登录屏幕>直接到用户之前查看的页面。 (我已经处理了所有与会话相关的变量)
我尝试过使用Shared Preferences
,但是如果我手动销毁应用程序,它会返回到登录屏幕,我不可能发生这种情况。
我尝试在数据库中手动存储首选项(这可能是Shared Preferences
的功能吗?)但是它仍然会加载登录活动,因为这是我第一次加载的活动。所以这个问题更多的是保持对用户所在的Activity的偏好,然后直接加载到此onResume()
。
我的问题:之前有没有人处理过这种情况?我应该如何预先加载活动。我在想,当我在登录界面中加载我的偏好时,我会检查上一个活动首选项,然后只需加载(假设用户已登录)。
有没有更好的方法来解决这个问题?是否有更原生的方式动态加载到适当的Activity start?
非常感谢任何帮助
编辑:好的,在发布之后我意识到我真正需要做的就是在OnResume中添加一个检查是否设置了适当的会话变量。然后加载到Activity中,实际上就像下面的Akbari所说的那样。我已将我的Preferences类回滚到使用标准Android SharePreferences
并且它现在完美运行。很高兴:)
简单地做这样的事情:
// load preferences
preferences.readPreferences();
// if preferences exist load straight to RecordActivity
if (application.currentSessionId!=null) {
Intent i = new Intent(getApplicationContext(), RecordActivity.class);
startActivity(i);
}
答案 0 :(得分:1)
您可以在首选项中保存登录状态,并在登录活动的onCreate()方法中进行检查
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);SharedPreferences prefs;
prefs = getSharedPreferences("your_pref", MODE_PRIVATE);
boolean login_status = prefs.getBoolean("login_status", false);
if (login_status) {
Log.v(LOG_TAG, "UserInfo>>User already logged in");
Intent intent = new Intent(this, HomeActivity.class);
startActivity(intent);
this.finish();
}
}
此处,如果已登录
,它将检查登录状态并将用户重定向到下一个活动