1

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

我试过使用Shared Preferences,但如果我手动销毁应用程序,它会返回登录屏幕,我不能让这种情况发生。

我尝试在数据库中手动存储首选项(这可能是什么Shared Preferences?)但它当然仍然加载登录活动,因为这是我第一次加载的活动。所以这个问题更多的是保持对用户始终在哪个 Activity 上的偏好,然后直接加载到 this onResume()

我的问题:以前有没有人处理过这种情况?我应该如何预加载活动。我在想,当我在登录屏幕中加载我的首选项时,我会检查以前的活动首选项并简单地加载到该首选项中(假设用户已登录)。

有没有更好的方法来解决这个问题?是否有更原生的方式动态加载到适当的 Activity 启动?

非常感谢任何帮助

编辑:好的,就在发布这个之后,我意识到我真正需要做的就是在 OnResume 中添加一个检查是否设置了适当的会话变量。然后加载到 Activity 中,实际上就像 Akbari 下面所说的那样。我已经将我的 Preferences 类回滚到使用标准 AndroidSharePreferences并且它现在可以完美运行。对此感到高兴:)

简单地做这样的事情:

    // load preferences
    preferences.readPreferences();      

    // if preferences exist load straight to RecordActivity
    if (application.currentSessionId!=null) {
        Intent i = new Intent(getApplicationContext(), RecordActivity.class);
        startActivity(i);           
    }       
4

1 回答 1

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

在这里,它将检查登录状态并将用户重定向到下一个活动,如果已经登录

于 2013-03-01T06:38:30.320 回答