Выход из приложения - два раза на "назад"

Ответить
Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Выход из приложения - два раза на "назад"

Сообщение Foenix » 25 апр 2013, 11:12

Расскажите, пожалуйста, как реализован выход из приложения, сто раз видела, когда при выходе нажимаешь "назад" а оно пишет - нажмите еще раз для выхода. Не тост интересует, естественно, а таймер там или что плюс какое событие. Голова не варит, другим забита.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

Re: Выход из приложения - два раза на "назад"

Сообщение KamiSempai » 25 апр 2013, 13:09

Как-то так:

[syntax=java]
private static final long TIME_INTERVAL_TO_EXIT = 1000;
private long mLastTimeBackPresed;

@Override
public boolean onKeyDown(final int pKeyCode, final KeyEvent pEvent) {
if(<условие проверяющее Activity на готовность к закрытию по двойному нажатию>
&& pKeyCode == KeyEvent.KEYCODE_BACK
&& pEvent.getAction() == KeyEvent.ACTION_DOWN) {
if(System.currentTimeMillis() - mLastTimeBackPresed < TIME_INTERVAL_TO_EXIT) {
// Закрываем приложение
}
else {
mLastTimeBackPresed = System.currentTimeMillis();
// И еще показываем тост
}
return true;
} else {
return super.onKeyDown(pKeyCode, pEvent);
}
}[/syntax]
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Выход из приложения - два раза на "назад"

Сообщение Foenix » 25 апр 2013, 14:02

Спасибо большое.
А
<условие проверяющее Activity на готовность к закрытию по двойному нажатию>
задумалась, что это могут быть за условия такие? у меня вроде выходишь и выходи на здоровье.. что-то сохранять вроде не надо.. оно ж на самом деле не выходит из приложения-то, так, скрывается с экрана..

просто юзеры попросили - говорят не замечаешь как выходишь из приложения. Но у меня и вправду - почти все активити как близнецы -братья, первое очень похоже на второе и третье..
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

Re: Выход из приложения - два раза на "назад"

Сообщение KamiSempai » 25 апр 2013, 14:17

Olivka писал(а):Спасибо большое.
А
<условие проверяющее Activity на готовность к закрытию по двойному нажатию>
задумалась, что это могут быть за условия такие? у меня вроде выходишь и выходи на здоровье.. что-то сохранять вроде не надо.. оно ж на самом деле не выходит из приложения-то, так, скрывается с экрана..

просто юзеры попросили - говорят не замечаешь как выходишь из приложения. Но у меня и вправду - почти все активити как близнецы -братья, первое очень похоже на второе и третье..
Например, в любом браузере обычно все происходит в одной Activity а кнопка назад - это переход на предыдущую страницу и закрывать окно стоит только после того как все вкладки закрыты и мы находимся на начальной странице. Если у тебя обычный стек окон, это условие можно отбросить.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

behzodbek
Сообщения: 58
Зарегистрирован: 23 дек 2012, 22:58
Откуда: UZB Namangan

Re: Выход из приложения - два раза на "назад"

Сообщение behzodbek » 11 май 2013, 17:32

Foenix писал(а):Расскажите, пожалуйста, как реализован выход из приложения, сто раз видела, когда при выходе нажимаешь "назад" а оно пишет - нажмите еще раз для выхода. Не тост интересует, естественно, а таймер там или что плюс какое событие. Голова не варит, другим забита.
Не давно реализовал
@Override
public void onBackPressed() {

// hide menu if it's shown
if (sideNavigationView.isShown()) {
sideNavigationView.hideMenu();
} else if (this.getClass().getName()
.equals(MainActivity.class.getCanonicalName())) {
newDelay = SystemClock.currentThreadTimeMillis();
if (newDelay - oldDelay <= 20) {
finish();
} else {
Toast.makeText(this, "For exit press Back button again",
Toast.LENGTH_SHORT).show();
oldDelay = newDelay;
}
} else
super.onBackPressed();
}
Изображение

Ответить