按下最近的应用程序按钮时清除EditText

时间:2018-11-15 11:34:13

标签: java android

我想清除编辑文本,当应用程序进入后台或 当按下菜单中的“最近使用的应用”按钮时。

我这样做-

@Override
public void onPause() {
    super.onPause();
    if (password != null) {
        password.getText().clear();
    }
}

但是我的问题是,当按下菜单中的“最近使用的应用程序”按钮时,该应用程序会变成一半背景,我可以看到 密码仍然。在这种情况下如何清除?

3 个答案:

答案 0 :(得分:0)

onStop()onPause()onDestroy()中执行上述代码,即当应用程序进入后台时android可以调用的所有possibe函数。

很多时候调用onStop()方法代替onPause()

答案 1 :(得分:0)

按下“最近使用的应用程序”按钮时,不会调用标准的Activity Lifecycle方法。在列出最近的应用程序弹出窗口后,活动将保持活动状态。

当用户打开“最近使用的应用程序”列表(或从中返回)时,唯一的Activity方法是带有布尔参数hasFocus的{​​{3}}。当用户打开用onWindowFocusChanged()调用的最近应用程序方法hasFocus的列表等于false,并且当用户在此列表中按Back时,用hasFocus调用的相同方法等于true

尝试以下代码,

public void onWindowFocusChanged(boolean hasFocus) {         
    super.onWindowFocusChanged(hasFocus);
    if(!hasFocus && password != null) {
        password.setText("");
    }
}

答案 2 :(得分:0)

但是我的问题是,当按下菜单中的“最近使用的应用程序”按钮时,该应用程序将变为一半背景,并且仍然可以看到密码。在这种情况下如何清除?

如官方文档所述:

  

onPause()的执行非常简短,不一定负担得起   有足够的时间执行保存操作。因此,您应该   不使用onPause()保存应用程序或用户数据,使网络   调用或执行数据库事务;这项工作可能无法完成   在方法完成之前。相反,您应该执行繁重的工作   onStop()期间关闭操作

因此,您应该将代码移至onStop()

如果您想知道如何以及为什么请检查: https://developer.android.com/guide/components/activities/activity-lifecycle