Как отменить метод onPause или onStop?
Редактировать & SOVLED (ниже)
Мне нужно сделать своего рода последнюю проверку, когда пользователь покидает действие.
Если результат этой проверки окажется безрезультатным, мне нужно не дать ему выйти.
Мне нужно что-то вроде этого:
@Override
protected void onPause() {
if (comprobations == true){
super.onPause();
} else {
NOT EXIT!!
}
}
Это кажется простым :p, но я пытался и не работает.
Кто-нибудь может мне помочь?
Thaanks
Решение:
Спасибо всем вам за быстрые ответы!
Каждый из них помог мне, и я кое-чему научился. новая вещь.
Я попробовал Метод onBackPressed()
, это то, что я искал.
Я знаю, что пользователь все еще может выйти из приложения, нажав кнопку Home и некоторые другие способы, но я просто хочу, чтобы пользователи не думали, что конфигурация моего приложения в порядке, когда они возвращаются в Главное меню; если они хотят выйти из приложения, это нормально.
Поэтому я сделаю нечто подобное:
@Override
public void onBackPressed() {
Log.d(LOGTAG, "onBackPressed");
if (COMPROBATIONS() == true){
super.onBackPressed();
} else {
SHOW WARNING!
}
return;
}
Спасибо всем за вашу помощь.
Желаю хорошо провести время.
4 ответа:
Вы ничего не можете сделать, чтобы помешать пользователю покинуть вашу деятельность. Как только метод onPause был вызван, приложение переходит в фоновый режим, и вы ничего не можете сделать, чтобы остановить его.
Если вы действительно хотите что-то сделать, когда пользователь покидает вашу активность, можно переопределить кнопку Назад, переопределив метод on
onBackPressed()
и заставить его выполнить какое-то другое действие. Однако пользователь все равно сможет уйти различными способами (нажав кнопку home кнопка, например).
Простой ответ: "вы не можете этого сделать "или"это невозможно". Ваше приложение не может помешать пользователю закрыть его или системе убить его, когда у него (системы) заканчивается ресурс.
И, если вы сравниваете с некоторыми встроенными приложениями (например, настройкой Samsung), помните, что эти "специальные" приложения имеют доступ к внутренним устройствам операционной системы и не работают на том же уровне, что и ваше приложение.
Вы не можете этого сделать, так как именно Android вызывает их.
Либо поставьте чек, прежде чем вы закончите() действие, либо ловите ключ назад.
if (!comprobations){ this.finish(): }
Или:
public boolean onKeyDown(int keyCode, KeyEvent event){ if(keyCode == KeyEvent.KEYCODE_BACK) { if (!comprobations){ this.finish(): return true; } return false; } }