【问题标题】:How i check whether to start an activity or not. android我如何检查是否开始活动。安卓
【发布时间】:2017-05-22 17:16:38
【问题描述】:

我是 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 方法中做类似的事情。如果用户没有登录,他/她必须登录才能继续; 提前致谢。

【问题讨论】:

  • 您可以创建一个启动活动,它可以是启动屏幕,您可以检查用户是否已登录,如果是,则导航到仪表板其他登录活动并完成启动屏幕活动您可以使用 sharedpreference 来检查用户是否登录登录与否
  • 谢谢,现在可以使用了。

标签: android android-activity sharedpreferences activity-finish


【解决方案1】:

为您的应用设置启动画面,使其成为启动器 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
        }
    }



}

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-15
      • 1970-01-01
      相关资源
      最近更新 更多