即使应用程序被破坏,也会保持“登录”状态

时间:2013-03-01 06:24:28

标签: java android sharedpreferences android-lifecycle

嗨,我有一个应用程序,即使应用程序被销毁,也严格要求“登录”。如果应用程序被销毁,则稍后重新加载(如果先前已登录)应该绕过登录屏幕>直接到用户之前查看的页面。 (我已经处理了所有与会话相关的变量)

我尝试过使用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);           
    }       

1 个答案:

答案 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();
    }
}

此处,如果已登录

,它将检查登录状态并将用户重定向到下一个活动
相关问题