Как я могу проверить, следует ли начинать деятельность или нет. андроид

Я новичок в Android. Моя основная деятельность - это активность входа в систему. Я хочу проверить, вошел ли пользователь в систему, после чего при повторном запуске действия не должно отображаться MainActivity, оно должно непосредственно отображать действие панели мониторинга. Я проверяю логин на основе значения, хранящегося в общих настройках.

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 ответа

Решение

Установите заставку для своего приложения, сделайте его активностью запуска и решите, какое действие следует показать.

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(). Эта функция жизненного цикла всегда вызывается, когда действие становится видимым. Преимущество этого заключается в том, что вы всегда можете проверить, изменился ли пользователь, вошедший в систему, в этом действии. Функция onCreate вызывается только один раз в течение жизненного цикла Activity, и именно тогда она создается / создается заново. Это будет обрабатывать случай использования, когда пользователь не вошел в систему, и они временно выходят из приложения (они не закрывают действие, а просто нажимают кнопку "Домой") и возобновляют работу, они застряли на неопределенное время и не могут войти в систему до они перезапускают приложение (убивают действие и перезапускают его), потому что логика входа в систему находится внутри onCreate, и она больше не будет вызываться. Но если поместить логику в onStart, которая будет выполняться всякий раз, когда активность снова станет видимой, ошибка будет решена.

Кроме того, вы должны объединить эту логику с ответом @Jonathan Aste.

Другие вопросы по тегам