Правильно пропустите активность входа, если он уже вошел в систему

Значок моей программы запуска запускает активность входа. Я сохранил зарегистрированный статус в SharedPreferences. Есть ли способ правильно пропустить активность входа и перейти прямо к основной деятельности без каких-либо сбоев пользовательского интерфейса. Все существующие решения, включающие finish() в onCreate() приводят к кратковременному отображению заголовка активности входа в систему или некоторого другого кратковременного пустого экрана.

У вас есть активатор, не имеющий пользовательского интерфейса, который решает открыть MainActivity или LoginActivity. Пользовательский интерфейс можно не объявлять:

 android:theme="@android:style/Theme.NoDisplay" 

Два других возможных решения:

Просто сделайте это по-другому: сделайте свой mainActivity вашей пусковой установкой и сделайте так, чтобы он проверял, вошел ли пользователь в систему. Затем перенаправляйте на loginActivity, когда это не так.

Другой способ – работать с фрагментами. Имейте базовую активность, которая может загружать как mainFragment, так и loginFragment. Для справки: https://developer.android.com/training/basics/fragments/index.html

Вы можете создать базовую операцию, которая будет проверять, находится ли пользовательское имя пользователя и пароль уже в SharedPreferences и запускает действие, если оно существует, следовательно, нет.

пример:

 public class BeanStalkBaseActivity extends SherlockActivity{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); if(SavedPreference.getUserName(this).length() == 0) { Intent intent = new Intent(this,LoginActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); finish(); startActivity(intent); }else { Intent intent = new Intent(this,MainActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); finish(); startActivity(intent); } } 

}

BeanStalkBaseActivity должен быть вашим Launcher, поскольку он служит только как контролер.

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

Я последовал за этим великим гидом в первый раз: https://www.bignerdranch.com/blog/splash-screens-the-right-way/