我正在开发一个小应用程序,通过对话框屏幕显示用户的密码。
当按下主页按钮时,我需要调暗屏幕(在多任务窗口上),以便任何其他人都看不到密码。
当用户重新打开应用程序时,它会询问应用程序锁定。但是,如果用户打开密码对话框并按下主页按钮,用户最后查看的对话框和密码将保持可见(在多任务窗口上)一段时间(3-4秒!!),直到新对话框询问锁。
到目前为止,我尝试过可能的dialog.dissmiss()选项。只有当应用程序再次打开时才会解除对话(直到出现新的锁定对话框),即使我将dismiss()放入onPause,onStop等。
任何想法都赞赏。
我也试过了,
android.os.Process.killProcess(android.os.Process.myPid());
this.finish();
System.exit(0);
它们都没有真正起作用。
答案 0 :(得分:0)
建议1:仔细检查您的实施情况。将对话框绑定到活动生命周期似乎是一个好主意(特别是为了避免泄漏的窗口错误,如here所述)
以下示例适用于我(使用来自Dialog的coachMark)
@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();
}
当你按下主页按钮时,onPause 肯定会被调用,所以如果这种方法对你不起作用,请尝试不在acitivty lifecycle的重启部分重新创建对话框(onRestart( ),onStart()和onResume()),看看它是否被正确解散。
建议2:如果上述所有方法都失败,您可以考虑按照here所述覆盖主页按钮。我强烈反对它,因为这可能导致应用程序以用户不期望的方式工作。