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

问题描述:

我是Android新手。我的MainActivity是一个登录活动。我想检查用户是否登录,然后再次启动活动时不应显示MainActivity,它应直接显示仪表板活动。我正在根据共享偏好中存储的值检查登录。我如何检查是否开始活动。 android

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方法中做类似的事情。如果用户未登录,他/她必须登录才能继续; 在此先感谢。

+0

你可以创建一个启动活动,它可以闪屏,你可以检查是否用户登录如果是的话导航到仪表板其他登录活动并完成splashscreen活动你可以使用sharedpreference来检查用户是否登录 – Pavan

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



} 

如果一个活动是基于它目前处于生命周期状态,即的onCreate,在onStart,的onResume,在onPause,的onStop,onDestory开始你可以告诉。看起来你想要某种标志来查询,表明一个活动是否开始,不幸的是,android没有这个功能。但更好的是我上面提到的生命周期,对于这些生命周期,您可以准确衡量活动的位置,即它是否正在创建,启动,恢复,暂停,停止或被破坏。这使得开发人员可以开发非常复杂的应用程序,而不必仅仅依赖于活动开始时的应用程序。

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

此外,你应该把这个逻辑与@Jonathan Aste的答案结合起来。