如何取消onPause或onStop方法?

3

编辑并解决(见下文)

当用户离开Activity时,我需要进行一种最后的检查。
如果此检查的结果不成功,则需要阻止他离开。

我需要实现这样一种功能:

@Override
protected void onPause() {
    if (comprobations == true){
        super.onPause();
        } else {
            NOT EXIT!!
        }
}

看起来很简单:p,但我尝试了并没有运行。

有人能帮我吗?

谢谢

解决方案:

感谢大家快速回答!
每个回答都帮助了我,我学到了一些新东西。

我已经尝试了onBackPressed()方法,这正是我想要的。 我知道用户仍然可以通过按下Home按钮和其他一些方式退出应用程序,但我只想防止用户认为我的应用程序配置没问题当他们返回主菜单时;如果他们想要退出应用程序,那就好。
所以我会做如下操作:

@Override
public void onBackPressed() {
    Log.d(LOGTAG, "onBackPressed");
    if (COMPROBATIONS() == true){
        super.onBackPressed();
    } else {
        SHOW WARNING!
    }
    return;
}

感谢大家的帮助。祝你们度过美好的时光。

我有一点感觉这似乎不可能,因为这将允许轻松的kiosk模式(在未root的Android中并非完全可能),而且我认为作为操作系统的Android处理这些情况(例如由于低内存而被操作系统停止应用程序等)。 - stealthjong
4个回答

5

无论如何,您都无法阻止用户离开您的Activity。一旦调用了onPause方法,应用程序就会转到后台,您无法停止它。

如果您确实希望在用户离开Activity时执行某些操作,则可以通过覆盖onBackPressed()方法来覆盖返回按钮,并让其执行其他操作。但是,用户仍然可以通过多种方式离开(例如按home键)。


谢谢,这正是我在寻找的内容,只是为了管理一些操作以防止用户返回。我考虑过生命周期,但没有考虑到“事件”; 我需要多读一些相关知识。谢谢。 - Esinor I.D.
没问题!是的,事件对于让你的应用程序按照你想要的方式运行非常有帮助。生命周期方法更多地是处理无论发生什么条件的一种方式。 - mattgmg1990

4
简单的回答是“你不能做到这一点”或“这是不可能的”。你的应用程序无法阻止用户关闭它,也无法阻止系统在资源不足时杀死它。
如果你正在与一些内置应用程序(例如三星的设置)进行比较,请记住那些“特殊”的应用程序可以访问操作系统的内部,并且不在与你的应用程序相同的级别上运行。

0

你不能这样做,因为是 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;

    }
}

0

这可以通过覆盖返回按钮来实现。像这样做:

public boolean onKeyDown(int keyCode, KeyEvent event) {

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接