Intereting Posts
Apkbuilder находит дубликат файла при добавлении powermock в проект тестирования Android Подсистемы Android ListView Изменения разрешений манифеста при развертывании новой версии приложения Как создать новый проект без поддержки Gradle? Как получить мой файл ShareActionProvider для отправки текста Динамически (от слушателей) просмотр пейджеров и т. Д. Androids Handler.post, что происходит точно Способ публикации с использованием неработающего волейбола Как узнать, когда подключен Android-телефон adroid Импорт библиотеки google-play-service с красным X рядом с этим справочным андроидом Не удается загрузить данные из кеша okHttp & retrofit AppStateClient loadState получает нулевые байты Диалоговая кнопка ошибки GooglePlayServicesUtil ничего не делает Пользовательское преобразование вида в растровое изображение, возвращающее черное изображение Android Studio Stuck at Gradle Скачать для создания нового проекта Как монтировать файл android img под Linux?

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

Значок моей программы запуска запускает активность входа. Я сохранил зарегистрированный статус в 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/