我如何检查是否开始活动。安卓

时间:2017-05-22 17:16:38

标签: android android-activity sharedpreferences activity-finish

我是Android新手。我的MainActivity是一个登录活动。我想检查用户是否已登录,然后再次启动活动不应显示MainActivity,它应直接显示Dashboard Activity。我根据共享偏好设置中存储的值检查登录信息。

sharedPreferences = this.getSharedPreferences("LoginDetail", Context.MODE_PRIVATE);
    String id = sharedPreferences.getString("userId","");
    if(!id.equalsIgnoreCase("") && id.length() > 5)
    {
        Intent i = new Intent(MainActivity.this, StudentSignin.class);
        startActivity(i);
        MainActivity.this.finish();
    }

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

我试图在onCreate方法中做类似的事情。如果用户未登录,他/她必须登录才能继续; 提前谢谢。

2 个答案:

答案 0 :(得分:0)

为您的应用设置启动画面,将其设置为启动器活动,并确定应显示哪个活动。

public class Splash extends AppCompatActivity{

    public void onCreate...{
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);
        sharedPreferences = this.getSharedPreferences("LoginDetail", Context.MODE_PRIVATE);
        String id = sharedPreferences.getString("userId","");
        if(userLogged(){
            //Go to dashboard
        }else{
            //Go to login screen
        }
    }



}

答案 1 :(得分:0)

您可以根据当前所处的生命周期状态判断某个Activity是否已启动,即onCreate,onStart,onResume,onPause,onStop,onDestory。看起来你想要一些标志来查询,表明一项活动是否已经开始,不幸的是,android没有那种能力。但更好的是我上面提到的生命周期,通过这些生命周期,您可以非常精确地衡量活动的位置,即是否正在创建,启动,恢复,暂停,停止或被销毁。这允许开发人员开发非常复杂的应用程序,而不仅仅是在活动开始时依赖。

我建议你做的是编写一个检查登录函数和一个你应该在onStart()内部调用的登录函数。当Activity变为可见时,始终会调用此生命周期函数。这样做的好处是,您始终可以检查用户是否已在此活动中更改了已登录状态。 onCreate函数仅在Activity的生命周期中被调用一次,即创建/重新创建它时。这将处理用户未登录的用例,并且他们暂时退出应用程序(他们没有关闭活动,只是按下主页按钮)并且他们恢复,他们无限期地被卡住并且无法登录,直到他们重新启动应用程序(终止活动并重新启动它),因为登录逻辑位于onCreate内部,并且不会再次调用它。但是将逻辑放在onStart中,只要活动再次可见就会执行,这个bug就会被解决。

此外,您应该将此逻辑与@Jonathan Aste的答案结合起来。