我想清除编辑文本,当应用程序进入后台或 当按下菜单中的“最近使用的应用”按钮时。
我这样做-
@Override
public void onPause() {
super.onPause();
if (password != null) {
password.getText().clear();
}
}
但是我的问题是,当按下菜单中的“最近使用的应用程序”按钮时,该应用程序会变成一半背景,我可以看到 密码仍然。在这种情况下如何清除?
答案 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