Android登录活动和主页活动重定向

Android登录活动和主页活动重定向,android,login,session-state,Android,Login,Session State,我正在应用程序中使用共享首选项管理会话。如果用户已登录,则必须显示主页活动,否则必须显示登录活动 借助 如果用户未登录,我尝试创建主页并重定向到登录活动 是这样吗?还是有更好的解决办法 谢谢, Bennet。根据我的经验,我还使用共享首选项进行登录页面/主页重定向。唯一的区别是,我的第一页是一个初始屏幕,我会在一段时间内显示它。之后,我使用共享首选项检查登录状态,并执行必要的重定向 但是这里需要注意的一点是,一些服务器要求您在经过一定的持续时间(作为登录响应的一部分从服务器发送的可配置值)后发送

我正在应用程序中使用共享首选项管理会话。如果用户已登录,则必须显示主页活动,否则必须显示登录活动

借助

如果用户未登录,我尝试创建主页并重定向到登录活动

是这样吗?还是有更好的解决办法

谢谢,
Bennet。

根据我的经验,我还使用共享首选项进行登录页面/主页重定向。唯一的区别是,我的第一页是一个初始屏幕,我会在一段时间内显示它。之后,我使用共享首选项检查登录状态,并执行必要的重定向

但是这里需要注意的一点是,一些服务器要求您在经过一定的持续时间(作为登录响应的一部分从服务器发送的可配置值)后发送新的登录请求。所以你可能想看看这个。在我的另一个应用程序中,我需要在每次启动应用程序时发送登录请求,因此我只需在第一次登录后将登录值(userName/Pass)存储在共享prefs中,并在启动屏幕后以静默方式执行登录部分(不显示登录屏幕)。所以这完全取决于你的要求。但在我所有的应用程序中,我只使用了共享pref


也许其他人可以提出更好的方法

以下是我在用户登录时所做的操作:

     private static final String APP_SHARED_PREFS = "asdasd_preferences";
     SharedPreferences sharedPrefs;
     Editor editor;
     private boolean isUserLoggedIn;

    sharedPrefs = getApplicationContext().getSharedPreferences(APP_SHARED_PREFS, Context.MODE_PRIVATE);
    isUserLoggedIn = sharedPrefs.getBoolean("userLoggedInState", false);
    editor = sharedPrefs.edit();
    editor.putBoolean("userLoggedInState", true);
    editor.putInt("currentLoggedInUserId", userId);
    editor.commit();

    Intent signupSuccessHome = new Intent(this, Home.class);
    signupSuccessHome.putExtra("reqFrom", "login");
    startActivity(signupSuccessHome);
    finish();
在我的所有活动扩展的基本活动(它包含actionbar和滑动菜单)中,我有以下检查: (mainactivity是我的登录/注册屏幕。如果用户未登录,我会将他们发送到那里)

为了防止用户返回登录屏幕: 在Login.java中:

    isUserLoggedIn = sharedPrefs.getBoolean("userLoggedInState", false);
    if (isUserLoggedIn) {
        Intent intent = new Intent(this, Home.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(intent);
        finish();
    }
在Home.java中:

@Override
public void onBackPressed() {
    Intent intent = new Intent(this, Home.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(intent);
    finish();
    super.onBackPressed();
}

如果您的应用程序只存储1个用户名和密码,那么您的方法是完美的,无需更改。但如果您将有多个用户,建议使用SQLite数据库。Hi Stealz,实际登录凭据将在远程服务器中检查。不是在手机里。共享首选项仅用于存储一个用户信息。谢谢,这似乎是个好主意。但是,就我的情况而言,我喜欢在android上登录facebook。完全一样。您是否将登录活动设置为启动器?
@Override
public void onBackPressed() {
    Intent intent = new Intent(this, Home.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(intent);
    finish();
    super.onBackPressed();
}