我如何检查是否启动 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 的回答结合起来。
我是 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 的回答结合起来。