У меня есть небольшое android приложение, которое состоит из 1 основного действия (запущенное действие, может использовать любой) и некоторых 3 дополнительных действий , требующих входа в систему с паролем.
Я создал класс приложения, который содержит информацию о том, вошел ли кто-то в систему или нет.
Кроме того, пользователь должен выйти из системы и автоматически отправить его на главную активность после 5 минут бездействия. Для этого я создал поток в классе приложения, который спит 5 минут, а затем выходит из системы и вызывает основное действие.
Вот соответствующий код:
public void setLoggedOut() {
isLoggedIn = false;
if (mTimerThread != null) {
mTimerThread.interrupt();
}
Intent myIntent = new Intent(MyApplication.this.getBaseContext(), MainActivity.class);
myIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(myIntent);
}
startActivity выше работает на некоторых устройствах (планшетах), на других я получаю следующую ошибку, и приложение вылетает:
android .util.AndroidRuntimeException: для вызова startActivity () вне контекста Activity требуется FLAG_ACTIVITY_NEW_TASK флаг. Это действительно то, что вы хотите?
Конечно, я не хочу новую задачу, а просто завершаю sh все остальные действия и go возвращаюсь к основной (FLAG_ACTIVITY_CLEAR_TOP звучит как правый). Здесь уже есть потоки с этой ошибкой в stackoverflow, но нет ничего, что помогло бы решить мою проблему.
Как уже упоминалось на некоторых устройствах (даже эмулируемых в Android studio), он работает должным образом, на некоторых - нет. 'т. Может быть, это вопрос уровня API (API 25 / Android 7.1.1 работал, API 22 / Android 5.1 не работал), но я не уверен ...
Я мог (возможно) реализовать механизм тайм-аута в каждом упражнении в отдельности, но это кажется мне не лучшим решением, я ненавижу дублировать код, когда не требуется.
Есть идеи? Альтернативные / лучшие концепции?