finish() не срабатывает при быстром переключении активити
Помогите разобраться, почему не срабатывает finish() при быстром переключении активити. Если переключать с интервалом, то по кнопке back выходит в главное меню и оттуда можно закрыть приложение, а если быстро попереключать активити, то при нажатии на кнопку back открывается главное меню, но при нажатии на back, чтобы выйти, снова открываются предыдущие активити.
Так делаю для кнопок вперед/назад:
public void right (View v){
Intent intent = new Intent(Colors.this,Colors2.class);
startActivity(intent);
overridePendingTransition(R.anim.leftr, R.anim.rightr);
finish();
}
public void left (View v){
Intent intent = new Intent(Colors.this,Pets.class);
startActivity(intent);
overridePendingTransition(R.anim.left, R.anim.right);
finish();
}
// выход в главное меню
@Override
public void onBackPressed () {
Intent intent = new Intent(Colors.this,Stage.class);
startActivity(intent);
finish();
}
Ответы (1 шт):
Мне встречались несколько способов решения такой проблемы, и, к сожалению, иногда не срабатывает ни один.
YourActivity.this.finish();вместоfinish();ГдеYourActivity- класс завершающейся активности((Activity) this).finish();опять же вместоfinish();Создать отдельный метод в своей
Activity:public void killSelf() { this.finish(); }И вызывать его вместо
finish();Для API >= 21 можно вызвать другой метод:
finishAndRemoveTask();Если Вы передаете какие-то данные через
Intent, то нужно помнить, что объем передаваемых данных не должен превышать 1 Мб в соответствии с документацией. С учетом хранения служебной информации - лучше не выходить за пределы 500Кб.FLAG_ACTIVITY_CLEAR_TASKstartActivity(intent .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK) .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) );С такими флагами
finish();будет не нужен, однако уничтожены будут вообще все экраны кроме вызываемого!