@lacredin
Программист

Как сменить текущий activity из Application?

Можно ли как-то из Application(имеется ввиду его наследник самописный) сменить текущий активити и удалить всю историю, что бы нельзя было вернуться на предыдущие активити?

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

Подскажите пожалуйста как это сделать :)
  • Вопрос задан
  • 350 просмотров
Решения вопроса 2
Rou1997
@Rou1997
Activity можно запускать не только из Activity, но и любого класса-наследника Context, в том числе Application:
Intent ii = new Intent(this, TargetActivity.class);
this.startActivity(ii);


что бы нельзя было вернуться на предыдущие активити?

Clear top.
Ответ написан
@lacredin Автор вопроса
Программист
В общем из Application можно вызывать startActivity, но только с оговорками
1. При вызове c Context из Aplication в Intent надо добавить флаг FLAG_ACTIVITY_NEW_TASK, который создаст новую задачу для нового активити, к текущему даже не будет вызвана OnPause().
2. Что бы завершить текущие активити надо добавить флаги FLAG_ACTIVITY_CLEAR_TOP, FLAG_ACTIVITY_CLEAR_TASK.
Итого мой код получился таким:
Intent intent = new Intent(MyApplication, Login.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP |Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
MyApplication.startActivity(intent);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы