Как отменить метод 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 3

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;

    }
}

Это возможно путем переопределения кнопки Назад . сделайте это так:

public boolean onKeyDown(int keyCode, KeyEvent event) {

if(keyCode==KeyEvent.KEYCODE_BACK)
{
  if (comprobations == true){
          finish();
       } else {
          NOT EXIT!!
       }
 }
}