android:当应用程序处于后台时,将屏幕调暗
我正在开发一个小应用程序,通过对话框屏幕显示用户的密码 按下“主页”按钮时,我需要调暗屏幕(在“多任务”窗口上),以便其他人看不到密码 当用户重新打开应用程序时,它会请求应用程序锁定。但是,如果用户保持密码对话框打开并按下主页按钮,则对话框和用户上次查看的密码将保持可见(在多任务窗口中)一段时间(3-4秒!!),直到新对话框请求锁定 到目前为止,我尝试了所有可能的dialog.dissmiss()选项。仅当应用程序再次打开时(直到出现新的锁定对话框),对话框才会关闭,即使我将dismise()置于暂停、停止等状态 任何想法都值得赞赏 我也试过,android:当应用程序处于后台时,将屏幕调暗,android,Android,我正在开发一个小应用程序,通过对话框屏幕显示用户的密码 按下“主页”按钮时,我需要调暗屏幕(在“多任务”窗口上),以便其他人看不到密码 当用户重新打开应用程序时,它会请求应用程序锁定。但是,如果用户保持密码对话框打开并按下主页按钮,则对话框和用户上次查看的密码将保持可见(在多任务窗口中)一段时间(3-4秒!!),直到新对话框请求锁定 到目前为止,我尝试了所有可能的dialog.dissmiss()选项。仅当应用程序再次打开时(直到出现新的锁定对话框),对话框才会关闭,即使我将dismise()置
android.os.Process.killProcess(android.os.Process.myPid());
this.finish();
System.exit(0);
它们实际上都不起作用。建议1:仔细检查您的实施情况。将对话框与活动生命周期绑定似乎是一个好主意(尤其是为了避免如上所述的泄漏窗口错误) 下面的示例对我来说效果很好(coachMark是从Dialog派生的) 当您按下home按钮时,onPause肯定会被调用,因此如果这种方法对您不起作用,请尝试不在(onRestart()、onStart()和onResume())的重新启动部分重新创建对话框,并查看是否正确地取消了该对话框
<强>建议2:如果所有这些都失败,您可能会考虑重写Home按钮,如所描述的。但我强烈建议不要这样做,因为这可能会导致应用程序以用户不希望的方式工作。是的,我跟踪了日志,正如您所说,按下home按钮时会调用onPause()。我删除了对话框onStart()和调用dismise()onPause的重新创建。当按下主页按钮时,应用程序直接进入后台,我仍然可以看到对话框(当然是在多任务窗口中)。而且,解雇很慢,大概3秒钟。当应用程序在3秒内重新打开时,我仍然可以看到对话框。
@Override
protected void onResume()
{
log.debug("onResume");
super.onResume();
// Show the coachMark depending on saved preference values
coachMark.mayBeShow();
}
@Override
protected void onPause()
{
log.debug("onPause");
// Hide the coachMark if it is showing to avoid leakedWindow errors
coachMark.maybeHide();
super.onPause();
}