Android检查用户的最佳实践“;“登录”;在每项活动中

Android检查用户的最佳实践“;“登录”;在每项活动中,android,login,android-activity,Android,Login,Android Activity,在我的应用程序中,用户需要先进行身份验证,然后才能开始使用该应用程序。。 我在startupActivity中有此代码 private boolean checkAuthentication() { SharedPreferences sp = getSharedPreferences( "com.simekadam.blindassistant", Context.MODE_PRIVATE); return sp.getBoolean("logged",

在我的应用程序中,用户需要先进行身份验证,然后才能开始使用该应用程序。。 我在startupActivity中有此代码

private boolean checkAuthentication() {
    SharedPreferences sp = getSharedPreferences(
            "com.simekadam.blindassistant", Context.MODE_PRIVATE);
    return sp.getBoolean("logged", false);
}

private void processStartup(){
    Log.d(TAG, "processing startup");
    if (checkAuthentication()) {
        Intent startApp = new Intent(getApplicationContext(),
                BlindAssistantActivity.class);
        startActivity(startApp);
    } else {

        Intent loginIntent = new Intent(getApplicationContext(), LoginActivity.class);
        startActivity(loginIntent);


    }
}
它只是工作,但我需要在每个活动中(在onStart或onResume方法中)检查它,但它会导致我所有活动中的代码重复。最好的方法是什么?我可以创建一个masteractivity,它将与其他活动一起扩展吗


谢谢

是的,您可以创建一个主活动并使用“扩展”从中继承,但是如果我是您,我会查看AppState

您可以创建一个扩展应用程序类的类。然后可以将其用于“全局”变量和状态

查看此网页:

我有时会做的事情是,我有默认的main活动,总是在最初运行

然后在onCreate中,我进行了一项检查,以决定显示哪个屏幕:

boolean isLoggedIn = checkUserStatus();
Intent intent = isLoggedIn ? new Intent(context, HomeActivity.class) 
                           : new Intent(context, LoginActivity.class);
startActivity(intent);
checkUserStatus()
是一个简单的函数,它获取一个布尔标志来确定用户是否登录:

protected boolean checkUserStatus(){
    boolean isLoggedIn ;
    Context context = getApplicationContext();
    SharedPreferences pref = context.getSharedPreferences("Session Data", MODE_PRIVATE);
    isLoggedIn = pref.getBoolean("isLoggedIn", false);
    return isLoggedIn ;
}
然后将
布尔值设置为true或false:

SharedPreferences pref = context.getSharedPreferences(
        "Session Data", MODE_PRIVATE);
SharedPreferences.Editor edit = pref.edit();
edit.putInt("LAST_VERSION_CODE", BuildConfig.VERSION_CODE);
edit.putBoolean("isLoggedIn", true);// or false if you log out
edit.commit();

无法理解您的问题。是..因此最好的方法是在应用程序类中创建登录断言变量,并在每个活动中检查它..听起来不错..谢谢。这是我在应用程序中处理登录的方式。AppState中保存的布尔变量,我在每个活动中都签入该变量。但要回答关于拥有“主活动”的另一个问题,这很容易通过继承实现。创建一个扩展“活动”作为主类的类,然后子类扩展主类。