我如何检查是否启动 activity 或不。 android

How i check whether to start an activity or not. android

我是 Android 的新手。我的 MainActivity 是一个 Login activity。我想检查用户是否登录,然后再次启动 activity 应该不会显示 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 方法中做类似的事情。如果用户未登录 he/she 必须登录才能继续; 提前致谢。

为您的应用设置启动画面,使其成为启动器 activity,然后决定应在其中显示哪个 activity。

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
        }
    }



}

您可以根据一个Activity当前所处的生命周期状态来判断它是否启动,即onCreate、onStart、onResume、onPause、onStop、onDestory。您似乎想要某种标志来查询以指示 activity 是否已启动,不幸的是 android 没有该功能。但更好的是我上面提到的生命周期,有了这些,你可以非常准确地判断 Activity 在哪里,即它是被创建、开始、恢复、暂停、停止还是被销毁。这允许开发人员开发非常复杂的应用程序,而不是仅依赖于 activity 何时启动。

我建议您做的是编写一个检查登录函数和一个您应该在 onStart() 内部调用的登录函数。当 Activity 变得可见时,这个生命周期函数总是被调用。这样做的好处是,您可以随时检查此 activity 中的用户登录状态是否已更改。 onCreate 函数仅在 Activity 的生命周期内被调用一次,即在 created/recreated 时。这将处理用户未登录的用例,他们暂时退出应用程序(他们不关闭 activity,但只需按主页按钮)然后他们恢复,他们无限期地卡住并且在他们重新启动应用程序(杀死 activity 并重新启动它)之前无法登录,因为登录逻辑在 onCreate 内部,不会再次调用它。但是将逻辑放在 onStart 中,每当 activity 再次可见时将执行该逻辑,错误将得到解决。

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